2012-04-12 150 views
0

晚上都刪除,我有以下SQL查詢PDO:SQL從子查詢錯誤

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

而對於一些奇怪的原因,我不斷收到以下消息:

#1241 - Operand should contain 1 column(s)

現在;我明白這條信息的意思,但我可以清楚地看到,我已經設置了一個條件,所以我不太清楚發生了什麼事情。

感謝您的幫助! :O)我敢肯定它是一個小白錯誤;)

+3

更改*到group_id – 2012-04-12 08:39:53

+0

就是這樣!我知道這很簡單。感謝那。您應該將其作爲解決方案發布;) – Menztrual 2012-04-12 08:41:00

+0

我在iPad上。格式化代碼等工作量太大 – 2012-04-12 08:42:35

回答

1

你在你的子查詢中使用*,您需要選擇正確的列:

SELECT group_id FROM groups WHERE group_owner = 1 
1

試試這個:

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

我知道你已經有了答案,還可以考慮使用聯接而不是子查詢:

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

給它一個try-

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

我還沒有測試過這個,甚至不知道你想要的結果,但試試這個。