2

別のテーブルにないテーブルから特定のエントリを選択しようとすると、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の記事を読んでいないユーザーを選択しようとしています。そのため、ビューテーブルにエントリがありません。

私はそれが今より理にかなっていることを願っています。回答ありがとうございます。V。

4

3 に答える 3

4

これを試して:

SELECT user_id
FROM users
WHERE user_id NOT IN (
  SELECT user_id
  FROM views
  WHERE article_id = 10
)
于 2012-06-06T10:17:13.663 に答える
4
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
于 2012-06-06T10:30:06.093 に答える
3

NOT INクエリを実行することは、通常、パフォーマンスには優れていません...代わりに、LEFTJOINを使用して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
于 2012-06-06T10:30:34.247 に答える