我在尝试从表中选择不在另一个表中的特定条目时在MySQL中遇到问题。我知道这句话听起来很疯狂,但这是我要做的一个例子。
表用户:
user_id,username,password (plus other columns not important to this)
表格文章:
article_is,user_id,content (plus others)
表视图(用于在用户查看特定文章时存储数据):
view_id,article_id,user_id,date
现在,我正在尝试选择那些没有阅读过特定文章的用户,例如ID为10的文章。因此他们在视图表中没有条目。
我希望现在更有意义。 谢谢你的回答。诉
答案 0 :(得分:4)
试试这个:
SELECT user_id
FROM users
WHERE user_id NOT IN (
SELECT user_id
FROM views
WHERE article_id = 10
)
答案 1 :(得分:3)
SELECT user_id FROM users u
LEFT JOIN views v ON v.user_id=u.user_id AND v.article_id = 10
WHERE v.user_id IS NULL
答案 2 :(得分:3)
执行NOT IN查询通常不太适合性能......相反,使用LEFT JOIN并查找NULL会更好。
select
u.User_ID
from
Users U
LEFT JOIN Views V
on U.User_ID = V.User_ID
AND v.Article_ID = 10
where
V.User_ID IS NULL