DELETE-kysely on tietojenkäsittelykielen alaosa, jota käytetään rivien poistamiseen taulukoista. Kuinka poistaa liittyminen MySQL on erittäin suosittu kysymys haastatteluissa. Ei ole helppo prosessi käyttää delete join -lauseita MySQL:ssä. Tässä osiossa aiomme kuvata, kuinka voit poistaa tietueita useista taulukoista käyttämällä INNER JOIN- tai LEFT JOIN-komentoa DELETE-kyselyssä.
POISTA LIITTYMINEN INNER JOIN -toiminnolla
Inner Join -kyselyä voidaan käyttää Delete-kyselyn kanssa poistamaan rivejä yhdestä taulukosta ja vastaavat rivit toisesta taulukosta, jotka täyttävät määritetyn ehdon.
Syntaksi
Seuraavassa on syntaksi, jota voidaan käyttää rivien poistamiseen useammasta kuin yhdestä taulukosta käyttämällä Inner Join -toimintoa.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Tässä kohde on taulukon nimi, josta haluamme poistaa rivejä vastaamalla määritettyä ehtoa. Oletetaan, että haluat poistaa rivejä taulukosta T1 ja T2 missä opiskelijatunnus = 2 , niin se voidaan kirjoittaa seuraavasti:
string.compare c#
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
Yllä olevassa syntaksissa kohdetaulukko (T1 ja T2) kirjoitetaan DELETE- ja FROM-avainsanojen väliin. Jos jätämme pois taulukon nimen sieltä, niin poista lausunto poistaa rivejä vain yhdestä taulukosta. Ilmaisu kirjoitettu PÄÄLLÄ avainsana on ehto, joka vastaa rivejä taulukoissa, joista aiot poistaa.
Esimerkki
Oletetaan, että meillä on kaksi pöytää opiskelijat ja yhteystiedot joka sisältää seuraavat tiedot:
Taulukko: opiskelijat
Taulukko: yhteystiedot
Suorita seuraava kysely ymmärtääksesi Poista Liity Inner Joinin kanssa. Tämä lauseke poistaa rivin, jolla on sama tunnus molemmista taulukoista.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Onnistuneen suorituksen jälkeen se antaa seuraavan viestin:
Suorita nyt seuraava kysely varmistaaksesi, että rivit on poistettu onnistuneesti.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Voit nähdä, että rivit, joissa opiskelijatunnus=4 on poistettu.
execlp
POISTA LIITTYMINEN LEFT JOIN -toiminnolla
Olemme jo oppineet LEFT JOIN -lauseen SELECT-käskyllä, joka palauttaa kaikki rivit vasemmasta (ensimmäisestä) taulukosta ja vastaavat tai ei-vastaavat rivit toisesta taulukosta. Vastaavasti voimme myös käyttää LEFT JOIN -lausetta DELETE-avainsanan kanssa poistaaksesi rivejä vasemmasta (ensimmäisestä) taulukosta, jossa ei ole vastaavia rivejä oikeasta (toisesta) taulukosta.
Seuraava kysely selittää sen selkeämmin, missä DELETE-käsky käyttää LEFT JOIN -komentoa rivien poistamiseen Pöytä 1 jolla ei ole vastaavia rivejä Taulukko2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
Huomaa yllä olevassa kyselyssä, että käytämme vain taulukkoa 1 DELETE-avainsanan kanssa, emme molempia, kuten INNER JOIN -käskyssä.
Esimerkki
Tehdään taulukko yhteystiedot ' ja ' Asiakkaat ' tietokannassa, joka sisältää seuraavat tiedot:
Taulukko: yhteystiedot
keskikuva css:ssä
Taulukko: asiakkaat
Suorita seuraava lauseke, joka poistaa asiakkaan, jolla ei ole a kännykkä määrä:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Onnistuneen suorituksen jälkeen se antaa seuraavan viestin:
Suorita nyt seuraava kysely varmistaaksesi, että rivit on poistettu onnistuneesti.
mysql> SELECT * FROM customers;
Näet, että rivit, joissa asiakkaalla ei ole matkapuhelinnumeroa, poistetaan.