我试图从一个表中选择一个(随机)记录,其中一个值在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/

10-12 14:36