SQL从子查询错误中删除

时间:2012-04-12 08:38:58

标签: php mysql 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)我确定它是一个noob错误;)

4 个答案:

答案 0 :(得分:1)

您在子查询中使用*,需要选择正确的列:

SELECT group_id FROM groups WHERE group_owner = 1 

答案 1 :(得分:1)

试试这个:

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

答案 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

答案 3 :(得分:0)

试一试 -

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

我没有对此进行测试,甚至不知道您想要的结果,但请尝试一下。