Conţinut
Semnele de întrebări sunt interogări imbricate în altul. Acestea vă permit să separați o parte din propoziție și să oferiți o alternativă mai ușor de citit la operații care ar putea necesita aderări complexe și uniuni. Subqueries în MySQL poate returna o valoare, un rând, o coloană sau o tabelă de date.
Utilizați subqueries pentru a crea fraze mai ușor de citit și compact (Thinkstock Imagini / Comstock / Getty Images)
Sintaxa
Sintaxa de bază a unui subtip este următoarea:
SELECT * FROM table1 WHERE coloana A = (SELECT columnB FROM table2) GO
Subqueries ar trebui să constea dintr-o instrucțiune "SELECT", "INSERT", "UPDATE", "DELETE", "SET" sau "DO", și nu puteți schimba tabela și să o utilizați simultan în cadrul subchetei. Subcheile sunt folosite de obicei în partea dreaptă a clauzei WHERE, care poate conține oricare dintre operatorii de comparație și logică, cum ar fi = (egal), <> (diferit), <= (mai mic sau egal),> = sau "BETWEEN" (între două valori), "NOT", "AND" și "OR". De asemenea, puteți utiliza cuvintele cheie "DISTINCT", "GROUP BY", "ORDER BY" și "LIMIT" și chiar combinate cu declarații "JOIN". În afară de restricțiile detaliate, există foarte puține limitări la scrierea subqueries în MySQL.
Nu există nici măcar o restricție privind numărul de subcheiri făcute într-o propoziție. Puteți găsi mai multe informații despre subdotări în manualul de referință MySQL (consultați secțiunea "Resurse").
exemplu
Să presupunem că aveți două mese: una cu numele și prenumele, adresa și codul poștal al membrilor unei liste de discuții și unul cu orașele, statele și codul poștal. Pentru a găsi numele membrilor care locuiesc în Brasilia, mai multe propoziții "selectați" pot fi folosite. Primul va căuta CEP-urile din Brasilia:
SELECTAȚI FROM FROM codurile WHERE state = "BRASILIA" GO
Apoi folosiți un "select" pentru fiecare cod poștal găsit:
SELECT nume, prenume FROM adrese WHERE cep = [codecep] GO
Această metodă este consumatoare de timp și ușor de făcut greșeli. Este ușor să pierzi un cod poștal, mai ales dacă sunt prea multe. O modalitate mai ușoară de a finaliza această sarcină este de a folosi prima teză ca subcotare în cadrul celui de-al doilea:
SELECT nume, prenume FROM adrese WHERE cep = (SELECT cep FROM coduri WHERE state = "BRASILIA") GO
Această interogare va afișa toți membrii listei tale de discuții care locuiesc în Brasilia.