ここでは2つのテーブル、投稿とコメント、1対多の関係、1つのコメントテーブルにフィールドコールcomment_dateがあります。今すべてのレコードを選択すると、結合されたテーブルの特定の条件を満たしていない
私は次のように期待される結果を得るのに苦労しています:
すべての記事は、特定の日付の後にコメントを持っていないが、私は、SQL文でこれを行ってことができますか?
テスト済みここでは2つのテーブル、投稿とコメント、1対多の関係、1つのコメントテーブルにフィールドコールcomment_dateがあります。今すべてのレコードを選択すると、結合されたテーブルの特定の条件を満たしていない
私は次のように期待される結果を得るのに苦労しています:
すべての記事は、特定の日付の後にコメントを持っていないが、私は、SQL文でこれを行ってことができますか?
テスト済みSELECT *
FROM posts p
WHERE NOT EXISTS(
SELECT 1
FROM comments c
WHERE c.comment_date >= 'deadline'
AND p.post_id = c.post_id
)
SELECT *
FROM posts
WHERE post_id NOT IN
(
SELECT comment_post
FROM comments
WHERE comment_date >= @deadline
)
は、最初の1、おかげで良いとして働いていました。これは、外部キーを指定する必要がない巧妙です。コメントにpost_idを使用するので、comment_postをpost_idに置き換えると完璧な答えになります。 –
NOT INは実際にはMySQLに存在しないように最適化されています – Quassnoi
素晴らしい、テスト済みです。キーワード "NOT EXISTS"、ありがとう。 –
迅速な答えをありがとう。 –