MySQL从不在另一个表中的表中选择特定条目

时间:2012-06-06 10:14:52

标签: php mysql sql database

我在尝试从表中选择不在另一个表中的特定条目时在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的文章。因此他们在视图表中没有条目。

我希望现在更有意义。 谢谢你的回答。诉

3 个答案:

答案 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