MySQL子查询返回多行,我想将值与所有行进行比较

时间:2016-01-15 14:20:48

标签: mysql subquery

我试图从表中选择单个(随机)记录,其中一个值介于1和1之间。 9,它和当时存在的用户ID不在一个单独的表格中(即它们之前没有被使用过):

SELECT QuestionID 
FROM Questions 
WHERE ((Marks BETWEEN 1 AND 9) 
    AND QuestionID !=(
        SELECT QuestionID 
        FROM Username.History 
        WHERE UserID = 1
    )
) ORDER BY RAND() LIMIT 0,1;

但是当我运行这个时,我得到一个子查询返回多行错误,有没有办法让它将QuestionID与历史记录中的所有QuestionID进行比较?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用NOT IN

SELECT QuestionID 
FROM Questions 
WHERE ((Marks BETWEEN 1 AND 9) 
    AND QuestionID NOT IN (
        SELECT QuestionID 
        FROM Username.History 
        WHERE UserID = 1
    )
) ORDER BY RAND() LIMIT 0,1;

只需将!=替换为NOT IN