我试图从一个表中选择一个(随机)记录,其中一个值在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进行比较?
最佳答案
是的,您可以使用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
。关于mysql - MySQL子查询返回多行,我想将一个值与所有行进行比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34813103/