我试图从表中选择单个(随机)记录,其中一个值介于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进行比较?
答案 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
。