MySQL 子查询 returns 多行,我想将一个值与所有行进行比较
MySQL subquery returns multiple rows, I want to compare a value to all rows
我正在尝试 select 来自 table 的单个(随机)记录,其中一个值介于 1 和 9 之间,并且它和当时存在的用户 ID 是不存在于单独的 table 中(即它们之前没有一起使用过):
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;
但是当我 运行 这个时,我得到一个子查询 returns 多行错误,有没有办法让它将 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
。
我正在尝试 select 来自 table 的单个(随机)记录,其中一个值介于 1 和 9 之间,并且它和当时存在的用户 ID 是不存在于单独的 table 中(即它们之前没有一起使用过):
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;
但是当我 运行 这个时,我得到一个子查询 returns 多行错误,有没有办法让它将 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
。