0

わかりました、私は前にここで質問したことはありませんが、ここに行きます.

私の PHP スクリプトには、現在、threads_readテーブル内のユーザー ID に一致するすべてのスレッドを取得するクエリがあります (すべての読み取りスレッド ID、Unix タイムスタンプ、およびユーザー ID を記録します)。次に、別のクエリを使用して、important_threadsスレッド ID を含むテーブル内の一致するすべての行を取得します。

これは答えるのが非常に簡単な質問かもしれませんが、私は MySQL(i) にあまり詳しくありませんが、important_threadsテーブル内のすべての一致しない行を取得するクエリを作成するにはどうすればよいでしょうか?

4

2 に答える 2

2

次のようなことができます:

SELECT * FROM threads_read WHERE id NOT IN (SELECT id FROM important_threads)

それは少しリソースが重いですが、それは仕事をします.

ただし、そのタイプのデータベース構造には反対することをお勧めします。既読または重要かどうかを確認するための列を持つ「スレッド」と呼ばれるテーブルにマークを付けるだけで、はるかに流暢な設計になります。

頑張ってください!

于 2012-06-10T02:08:13.950 に答える
2

important_threads テーブルで LEFT JOIN を実行し、テーブルに一致しない行のみを取得できます。

SELECT 
    a.*
FROM 
    threads_read a
LEFT JOIN
    important_threads b ON a.id = b.id
WHERE 
    a.user_id = 14 
    AND 
    b.id IS NULL
于 2012-06-10T02:21:41.797 に答える