2012-04-12 152 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) 

我还没有测试过这个,甚至不知道你想要的结果,但试试这个。