晚上,我有以下针对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错误;)
答案 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 )
我没有对此进行测试,甚至不知道您想要的结果,但请尝试一下。