选择所有记录不符合加入表中的某些条件
问题描述:
假设我们在这里有两个表格,帖子和评论,关系是一对多的,评论表中有一个字段调用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
)
测试,当过好第一个,谢谢。这是聪明的,不需要指定外键。因为我在评论中使用了post_id,所以如果用post_id替换comment_post,它将是一个完美的答案。 – 2009-05-29 11:12:07
NOT IN实际上被优化为不存在于MySQL中 – Quassnoi 2009-05-29 11:14:54