我有三张桌子
Articles Channels ArticlesChannels
pk id pk id pk articlePk channelPk
1 a1 1 c1 1 1 1
2 a2 2 c2 2 1 2
3 2 2
现在我想选择包含在一个集合中并排除在另一个集合中的所有文章。
例如:选择所有具有频道 a1 而不是频道 a2 的文章。
正确结果:由于两篇文章都在频道 c2 中,因此为空。
例如:选择所有具有频道 a1 的文章。
正确结果: Channel c1 中只有Article1 一条。
我的 SQL 如下所示:
SELECT a.id
FROM articles a, channels c, articlechannels ac
WHERE a.pk=ac.articlePk
AND ac.channelPk = c.pk
AND c.id IN ('a1')
AND c.id NOT IN ('a2');
问题是结果不排除 c.id NOT IN ('a2') 中存在的结果。
有任何想法吗?