DELETE-frågan är en underdel av datamanipuleringsspråket som används för att ta bort rader från tabeller. Hur man tar bort join in MySQL är en mycket populär fråga under intervjuerna. Det är inte en lätt process att använda delete join-satserna i MySQL. I det här avsnittet kommer vi att beskriva hur du kan ta bort poster från flera tabeller med hjälp av INNER JOIN eller LEFT JOIN i DELETE-frågan.
DELETE JOIN med INNER JOIN
Inner Join-frågan kan användas med Delete-frågan för att ta bort rader från en tabell och de matchande raderna från den andra tabellen som uppfyller det angivna villkoret.
Syntax
Följande är syntaxen som kan användas för att ta bort rader från mer än en tabell med Inner Join.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
Här är målet ett tabellnamn varifrån vi vill ta bort rader genom att matcha det angivna villkoret. Anta att du vill ta bort rader från tabellen T1 och T2 var student_id = 2 , då kan det skrivas som följande påstående:
css första barn
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
I ovanstående syntax skrivs måltabellen (T1 och T2) mellan nyckelord DELETE och FROM. Om vi utelämnar något tabellnamn därifrån, då ta bort uttalande tar bara bort rader från en enda tabell. Uttrycket skrivet med PÅ nyckelord är villkoret som matchar raderna i tabeller där du ska ta bort.
Exempel
Anta att vi har två bord studenter och kontakter som innehåller följande data:
Tabell: studenter
Tabell: kontakter
Kör följande fråga för att förstå Ta bort Gå med med Inner Join. Denna sats tar bort en rad som har samma id i båda tabellerna.
java lokal datumtid
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
Efter framgångsrik körning kommer det att ge följande meddelande:
Kör nu följande fråga för att verifiera raderna som tagits bort.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
Du kan se att raderna där student_id=4 är raderad.
DELETE JOIN med LEFT JOIN
Vi har redan lärt oss LEFT JOIN-satsen med SELECT-satsen som returnerar alla rader från den vänstra (första) tabellen och de matchande eller inte matchande raderna från en annan tabell. På liknande sätt kan vi också använda LEFT JOIN-satsen med nyckelordet DELETE för att ta bort rader från den vänstra (första) tabellen som inte har matchande rader från en höger (andra) tabell.
Följande fråga förklarar det tydligare var DELETE-satsen använder LEFT JOIN för att ta bort rader från Bord 1 som inte har matchande rader i Tabell 2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
I ovanstående fråga, lägg märke till att vi bara kommer att använda Tabell 1 med nyckelordet DELETE, inte båda som gjorde i INNER JOIN-satsen.
Exempel
Låt oss skapa en tabell ' kontakter ' och ' kunder ' i en databas som innehåller följande data:
Tabell: kontakter
de tidiga mukers
Tabell: kunder
Utför följande uttalande som tar bort kunden som inte har en mobiltelefon siffra:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
Efter framgångsrik körning kommer det att ge följande meddelande:
Kör nu följande fråga för att verifiera raderna som tagits bort.
mysql> SELECT * FROM customers;
Du kan se att raderna där kunden inte har mobilnumret raderas.