Norėdami pradėti, sistemoje turite būti įdiegę MySQL su jos paslaugomis: MySQL darbastaliu ir komandinės eilutės kliento apvalkalu. Po to duomenų bazės lentelėse turėtumėte turėti keletą duomenų ar reikšmių kaip dublikatų. Panagrinėkime tai su keliais pavyzdžiais. Pirmiausia atidarykite komandinės eilutės kliento apvalkalą iš darbalaukio užduočių juostos ir paprašę įveskite „MySQL“ slaptažodį.
Mes radome skirtingus metodus, kaip rasti kopijas lentelėje. Pažvelkite į juos po vieną.
Ieškoti kopijų viename stulpelyje
Pirmiausia turite žinoti apie užklausos, naudojamos tikrinant ir skaičiuojant vieno stulpelio kopijas, sintaksę.
>> PASIRINKITE stulpelį COUNT (stulpelis) IŠ GRUPĖS lentelės PAGAL stulpelį TURI SKAIČIAI (stulpelis)> 1;Štai aukščiau pateiktos užklausos paaiškinimas:
- Stulpelis: Tikrintino stulpelio pavadinimas.
- COUNT (): funkcija naudojama daugybei pasikartojančių verčių suskaičiuoti.
- GRUPUOTI PAGAL: sakinys, naudojamas grupuoti visas eilutes pagal tą konkretų stulpelį.
Savo „MySQL“ duomenų bazės „duomenyse“ sukūrėme naują lentelę, vadinamą „gyvūnai“, turinčiomis pasikartojančias vertes. Jame yra šeši stulpeliai su skirtingomis vertėmis, t.g., id, vardas, rūšis, lytis, amžius ir kaina, pateikianti informaciją apie skirtingus augintinius. Paskambinę į šią lentelę naudodami „SELECT“ užklausą, gauname žemiau pateiktą išvestį „MySQL“ komandinės eilutės kliento apvalkale.
>> PASIRINKTI * IŠ duomenų.gyvūnai;
Dabar pasistengsime surasti nereikalingas ir pasikartojančias reikšmes iš pirmiau pateiktos lentelės, naudodami sąlygą COUNT ir GROUP BY užklausoje SELECT. Ši užklausa suskaičiuos naminių gyvūnėlių, kurie lentelėje yra mažiau nei 3 kartus, vardus. Po to jie rodys tuos vardus, kaip nurodyta toliau.
>> SELECT Name COUNT (Name) FROM data.gyvūnai < 3;
Naudojant tą pačią užklausą, kad gautumėte skirtingus rezultatus, keisdami „COUNT“ numerį „Naminių gyvūnėlių vardai“, kaip parodyta žemiau.
>> SELECT Name COUNT (Name) FROM data.gyvūnai GRUPĖ PAGAL VARDĄ, KURIŲ SKAIČIUS (vardas)> 3;
Norėdami gauti iš viso 3 pasikartojančių gyvūnų vardų verčių rezultatus, kaip parodyta žemiau.
>> SELECT Name COUNT (Name) FROM data.gyvūnai GRUPĖ PAGAL VARDĄ, KURIŲ SKAIČIUS (vardas) = 3;
Ieškoti dublikatuose keliuose stulpeliuose
Užklausos sintaksė norint patikrinti ar suskaičiuoti kelių stulpelių kopijas yra tokia:
>> PASIRINKITE stulpelius1, COUNT (stulpeliai1), stulpeliai2, sskaičius (stulpeliai2) IŠ lentelės GRUPĖS PAGAL col1, col2 HAVING COUNT (col1)> 1 AND COUNT (col2)> 1;Štai aukščiau pateiktos užklausos paaiškinimas:
- col1, col2: tikrinamų stulpelių pavadinimas.
- COUNT (): funkcija naudojama kelioms pasikartojančioms reikšmėms suskaičiuoti.
- GRUPUOTI PAGAL: sąlyga, naudojama grupuoti visas eilutes pagal tą konkretų stulpelį.
Mes naudojome tą pačią lentelę, vadinamą „gyvūnai“, turinčią pasikartojančias vertes. Mes gavome žemiau pateiktą išvestį, naudodami aukščiau pateiktą užklausą, kad patikrintume pasikartojančias vertes keliuose stulpeliuose. Mes tikrinome ir skaičiavome stulpelių „Lytis“ ir „Kaina“ pasikartojančias vertes, grupuodami juos pagal stulpelį „Kaina“. Jame bus nurodytos ne daugiau kaip 5 lentelėje nurodytos naminių gyvūnėlių lytys ir jų kainos, nurodytos lentelėje.
>> PASIRINKITE Lytis, COUNT (Lytis), Kaina, COUNT (Kaina) IŠ duomenų.gyvūnai GRUPĖ PAGAL KURIŲ SKAIČIŲ (kaina) < 5 AND COUNT(Gender) < 5;
Ieškokite kopijų vienoje lentelėje naudodami INNER JOIN
Čia yra pagrindinė sintaksė ieškant dublikatų vienoje lentelėje:
>> SELECT col1, col2, lentelė.stulpelis IŠ lentelės INNER JOIN (pažymėkite stulpelį iš lentelės GROUP pagal col HAVING COUNT (col1)> 1) temp ON table.col = temp.col;Čia yra pridėtinės užklausos pasakojimas:
- Pulkininkas: stulpelio pavadinimas, kurį reikia patikrinti ir pasirinkti kopijas.
- Temp: raktinis žodis, kad stulpelyje būtų taikomas vidinis sujungimas.
- Lentelė: tikrinamos lentelės pavadinimas.
Mes turime naują lentelę „order2“ su pasikartojančiomis reikšmėmis stulpelyje OrderNo, kaip parodyta žemiau.
>> PASIRINKTI * IŠ duomenų.užsakymas2;
Mes pasirenkame tris stulpelius: Prekė, Pardavimai, Užsakymo Nr., Kurie bus rodomi išvestyje. Kol stulpelis „OrderNo“ naudojamas dublikatams tikrinti. Vidinis sujungimas parinks reikšmes ar eilutes, kurių elementų vertės yra daugiau nei vienos lentelėje. Vykdydami vykdymą, gausime žemiau pateiktus rezultatus.
>> SELECT prekė, pardavimas, užsakymas2.Užsakymas Nėra iš duomenų.order2 INNER JOIN (PASIRINKITE OrderNo FROM duomenis.užsakymas2 GRUPĖ PAGAL užsakymą Nr. SKAIČIUS (Prekė)> 1) temp ON order2.Užsakymo Nr. = Temp.Užsakymo Nr
Ieškokite dublikatų keliose lentelėse naudodami INNER JOIN
Čia yra supaprastinta sintaksė ieškant dublikatų keliose lentelėse:
>> PASIRINKITE stulpelį iš lentelės1 INNER JOIN lentelė2 Į lentelę1.col = lentelė2.col;Čia yra pridėtinės užklausos aprašymas:
- col: stulpelių, kuriuos reikia patikrinti ir pasirinkti, pavadinimas.
- VIDINIS PRISIJUNGIMAS: funkcija, naudojama sujungiant dvi lenteles.
- ĮJUNGTA: naudojamas sujungti dvi lenteles pagal pateiktus stulpelius.
Mūsų duomenų bazėje yra dvi lentelės „order1“ ir „order2“, kurių abiejuose yra „OrderNo“ stulpelis, kaip parodyta žemiau.
Norėdami sujungti dviejų lentelių dublikatus pagal nurodytą stulpelį, naudosime INNER sujungimą. Sąlyga INNER JOIN gaus visus duomenis iš abiejų lentelių, jas sujungdama, o ON sąlyga susies tuos pačius vardų stulpelius iš abiejų lentelių, el.g., Užsakymo Nr.
>> PASIRINKTI * IŠ duomenų.order1 INNER JOIN duomenys.order2 ON order1.OrderNo = order2.UžsakymasNE;
Norėdami gauti tam tikrus stulpelius išvestyje, pabandykite atlikti šią komandą:
>> SELECT Region, Status, Item, Sales FROM duomenys.order1 INNER JOIN duomenys.order2 ON order1.OrderNo = order2.UžsakymasNE;
Išvada
Dabar galėtume ieškoti kelių kopijų vienoje ar keliose „MySQL“ informacijos lentelėse ir atpažinti „GROUP BY“, „COUNT“ ir „INNER JOIN“ funkcijas. Įsitikinkite, kad tinkamai sukonstravote lenteles, taip pat ar pasirinkti tinkami stulpeliai.