1

ネストされた SQL クエリがあります。

SELECT DISTINCT(topic_id)
FROM bb_posts 
WHERE topic_id NOT IN ( 
  SELECT topic_id FROM bb_posts 
  WHERE poster_id = $user_id AND post_status = 0 ) 
ORDER BY post_time DESC

私の Web サーバーは、ネストされたクエリを許可しない MySQL 4.0 を実行しています。JOIN 用語を使用して同じクエリを提案できる SQL の第一人者はいますか? 私は試してみました...しかし、私はこれを理解することはできません。ばかげた感じ。

4

2 に答える 2

2

topic_id が null 可能でないと仮定すると、次のことができます。

SELECT DISTINCT(T1.topic_id)
FROM bb_posts As T1
    Left Join bb_posts As T2
        On T2.topic_id = T1.topic_id
            And T2.poster_id = $user_id
            And T2.post_status = 0
Where T2.topic_id Is Null
ORDER BY T1.post_time DESC
于 2010-11-11T21:24:36.550 に答える
1

あなたの要件が何であるかはよくわかりませんが、クエリを見て、これで十分だと思います。

SELECT DISTINCT(topic_id) 
FROM bb_posts 
WHERE poster_id <> $user_id OR post_status <> 0 
ORDER BY post_time DESC
于 2010-11-11T21:26:07.877 に答える