2010-11-20 31 views
0

Ich habe 2 Tabellen, words und lists.SQL Löschen beim Prüfen von Daten aus einer anderen Tabelle

words gehören zu Listen und sind Referenzen von listId Feld.

lists enthalten ein Feld username.

Ich muss ein Wort löschen über es ist id, aber zuerst müssen Sie überprüfen, dass der Benutzername auch korrekt ist, daher muss ich die Listen-Tabelle verweisen.

Dies ist, was ich bisher habe, aber es funktioniert nicht.

DELETE FROM w 
USING lists AS l INNER JOIN words AS w 
WHERE 
l.username = 'admin' 
AND w.listId = 31 
AND l.id = w.listId 

Antwort

2
DELETE w FROM words w 
INNER JOIN lists l on l.id = w.listid 
WHERE 
l.username = 'admin' 
AND w.listId = 31 
+0

I c gehängt 'UND w.listId' zu' AND w.id' und es hat geklappt, sorry, ich habe dir nicht genug Info gegeben – jax

0

Ich bin nicht 100% sicher my-SQL-Syntax (I Oracle verwenden), aber dies sollte funktionieren:

DELETE FROM words 
WHERE listid in (
    SELECT 31 from lists where username = 'admin' 
) 

... wenn Sie wirklich, Sie könnten ändern sie den inneren wählen zu:

SELECT listId from lists where username = 'admin' and listId = 31 

(aber es ist nicht notwendig)

+0

Das wählt die Nummer 31, ich bin mir nicht sicher, ob es etwas korrekt zurückgeben würde, sogar auf Oracle. .. –

+1

Richtig ... das ist es, was es auswählen soll! Das ist die listId, die er löschen wollte. – Gerrat

Verwandte Themen