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

MySQL子查询返回多行,我想将一个值与所有行进行比较,mysql,subquery,Mysql,Subquery,我试图从一个表中选择一个(随机)记录,其中一个值介于1和9之间,并且它和当时存在的用户ID不在单独的表中(即,它们以前没有一起使用): 但当我运行此命令时,我得到一个子查询返回多行错误,是否有方法让它将QuestionID与历史记录中的所有QuestionID进行比较?是的,您可以使用不在中: SELECT QuestionID FROM Questions WHERE ((Marks BETWEEN 1 AND 9) AND QuestionID NOT IN (

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


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

是的,您可以使用
不在
中:

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;
只需更换
=
不在

很好,谢谢:)我有点经验不足,所以我不知道命令存在
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;