2012-04-12 2 views
0

Abend zusammen, ich habe die folgende SQL-Abfrage für PDO:SQL Löschen von mit Unterabfragefehler

DELETE FROM group_members WHERE group_id IN(SELECT * FROM groups WHERE group_owner = 1) AND user_id = 2

Und aus irgendeinem seltsamen Grund, warum ich erhalte die folgende Meldung:

#1241 - Operand should contain 1 column(s)

Jetzt; Ich verstehe, was die Nachricht bedeutet, aber ich kann deutlich sehen, dass ich eine Bedingung nach dem gestellt habe und ich bin mir nicht sicher, was los ist.

Danke für jede Hilfe! : O) Ich bin sicher, es ist ein Noob Fehler;)

+3

Ändern * zu group_id –

+0

Das war es! Ich wusste, dass es etwas Einfaches war. Dank dafür. Du solltest das als Lösung posten;) – Menztrual

+0

Ich bin auf meinem iPad. Es ist zu viel Aufwand, um Code usw. zu formatieren –

Antwort

1

Sie * in Ihrer Unterabfrage verwenden, müssen Sie die richtige Spalte wählen:

SELECT group_id FROM groups WHERE group_owner = 1 
1

starten:

DELETE FROM group_members 
WHERE group_id 
    IN (SELECT group_id FROM groups WHERE group_owner = 1) 
    AND 
    user_id = 2 
1

I wissen Sie schon eine Antwort haben, sondern auch, sollten Sie eine Stelle der Unterabfrage verbinden mit:

DELETE gm.* 
FROM group_members AS gm 
JOIN groups g 
    ON gm.group_id = g.id 
WHERE gm.user_id = 2 
    AND g.group_owner = 1 
0

geben Sie ihm einen TRY

Ich habe dies nicht getestet und weiß nicht einmal Ihr gewünschtes Ergebnis, aber versuchen Sie es.