Sisu
Päringud on teise sisestatud päringud. Nad võimaldavad eraldada lause osa ja pakkuda loetavamat alternatiivi operatsioonidele, mis võivad vajada keerulisi liitumisi ja ametiühinguid. MySQL-i päringuid saab tagastada väärtuse, rea, veeru või andmete tabeli.
Loe loetavamaid ja kompaktsemaid lauseid subqueries abil (Thinkstock Images / Comstock / Getty Images)
Süntaks
Subquery põhiline süntaks on järgmine:
SELECT * FROM table1 WHERE veergA = (SELECT veergB FROM table2) GO
Subqueries peaks koosnema "SELECT", "INSERT", "UPDATE", "DELETE", "SET" või "DO" avaldusest ning te ei saa tabelit muuta ja kasutada samaaegselt subquery'is. Subqueries kasutatakse tavaliselt WHERE klausli paremal küljel, mis võib sisaldada ühtegi võrdlust ja loogilist operaatorit, näiteks = (võrdne), <> (erinev), <= (vähem või võrdne),> = või "BETWEEN" (kahe väärtuse vahel), "NOT", "AND" ja "OR". Võite kasutada ka märksõnu "DISTINCT", "GROUP BY", "ORDER BY" ja "LIMIT" ning isegi "JOIN" avaldustega. Lisaks üksikasjalikele piirangutele on MySQL-i allkirjade kirjutamisel vähe piiranguid.
Ühe lause raames tehtud subquerieside arvu ei ole isegi piiratud. Täiendavat teavet subküsimuste kohta leiate MySQL-i kasutusjuhendist (vt jaotist „Ressursid“).
Näide
Oletame, et teil on kaks tabelit: üks on meililistide ees- ja perekonnanimi, aadress ja sihtnumber ning üks linnade, osariikide ja postiindeksiga. Brasilias elavate liikmete nimede leidmiseks võib kasutada mitut lauset. Esimene otsib Brasilia CEP-id:
VALI JÄRGI koodidest, kus riik = "BRASILIA" GO
Seejärel kasutage iga valitud postiindeksile „vali“:
SELECT nimi, perekonnanimi FROM aadressid WHERE cep = [codecep] GO
See meetod on aeganõudev ja vigade tegemiseks lihtne. Postiindeks on lihtne kaotada, eriti kui neid on liiga palju. Lihtsam viis selle ülesande täitmiseks on kasutada esimest lauset subqueryna teise:
SELECT nimi, perekonnanimi FROM aadressid, kus cep = (SELECT cep koodidest WHERE olek = "BRASILIA") GO
See päring näitab kõiki teie meililoendi liikmeid, kes elavad Brasilias.