2

多くのコメントを含む posts テーブルがあるとします (コメントはユーザーに属します)。

特定のユーザーがコメントしていないすべての投稿を表示するにはどうすればよいですか?

データベースに ID 124 のユーザーがいるとします。

select * from posts p left join comments c on p.id = c.post_id 
where c.id is null or c.user_id <> 124

しかし、それは正しくないようです..投稿にコメントがない場合はどうなりますか?

4

3 に答える 3

1

テーブルにまだレコードがないものがあるため、テーブルではなくuser_idfromテーブルをチェックする必要があります。postcommentsuser_idcomments

SELECT  p.* 
FROM    posts p
        LEFT JOIN comments c
            ON p.id = c.post_id AND c.user_id = 124
WHERE   c.post_id IS NULL
于 2013-01-23T07:12:15.870 に答える
0
select * from posts p left join comments c 
on p.id = c.post_id 
where c.post_id is null and p.user_id = 124;

編集:

これを試してください:

SQLFIDDLEデモ

select * from posts p
where p.pid not in ( select c.pid
from comments c
where c.uid = 111)
;

| PID | PNAME |
---------------
|   3 |    p3 |
于 2013-01-23T07:12:58.897 に答える
0

質問のIDとしてnullを使用するのは悪い習慣です。私はこのようなものを使用します

select * from post p1 where not exists 
      (select 1 from comment c1 where c1.post_id = p1.id)
union
select * from post p2 where exists 
       (select 1 from comment c1 where c1.post_id = p1.id and c2.user_id <> 124)
于 2013-01-23T07:20:17.377 に答える