用SELECT ... IN错误INSERT INTO语句

时间:2013-06-09 13:10:01

标签: insert mysql-error-1054

好吧,我需要在user_badges为每个正确回复投票的人添加一行。

"select user_id from room_poll_results........"单独工作正常,但只要我尝试在我的INSERT INTO语句中使用它,它就会回复错误:

"[Err] 1054 - Unknown column 'user_id' in 'IN/ALL/ANY subquery'"

我不知道它来自哪里......

INSERT INTO user_badges (user_id,PPO) SELECT user_id IN
(SELECT user_id FROM room_poll_results
WHERE user_id in (select user_id from room_poll_results 
where answer_text='3' AND question_id='3') AND user_id in
(select user_id from room_poll_results where answer_text='2' AND question_id='4'));

3 个答案:

答案 0 :(得分:1)

它告诉你user_id中没有名为room_poll_results的列。将该列名称(在子选择中)更改为表中相应字段的任何内容。 (您希望发布完整的架构以获得更具体的响应。)

答案 1 :(得分:0)

我认为user_badges表有一列user_id。您的第一个IN应由FROM替换。所以,我稍微修改了你的查询,如下所示:

INSERT INTO user_badges (user_id, PPO) 
SELECT user_id FROM
(   
    SELECT user_id FROM room_poll_results
    WHERE user_id in 
    (
        select user_id from room_poll_results 
        where answer_text='3' AND question_id='3'
    ) AS U
    AND user_id in
    (
        select user_id from room_poll_results 
        where answer_text='2' AND question_id='4'
    ) AS U
) AS U;

答案 2 :(得分:0)

每当您收到"[Err] 1054 - Unknown column 'user_id' in 'IN/ALL/ANY subquery'"错误时,只需将其读取即表示查询中不存在COLUMN中名称为parenthesis的{​​{1}}。

要对此进行调试,因为您有子查询,请单独运行每个查询,然后查看其结果。这将帮助您了解哪个表缺少列。一旦你得到它,你就可以创建专栏,然后联合你的子查询,那就是它!