如何通过NOT IN过滤主详细信息表?

时间:2013-07-16 18:44:27

标签: mysql master-detail

我有两张这样的表

tblMaster
---------
id  title
---------
1    a
2    b
3    c
4    d

tblDetail
---------
dId  mId
---------
100  1
100  2
100  4
101  1
101  3
102  2
102  3

我加入他们并使用此查询从tblMaster中查找没有详细项目ID的项目(1,4)

SELECT m.id, m.title FROM tblMaster m
INNER JOINT tblDetail d on d.mId=m.id
WHERE m.id NOT IN (SELECT d2.mId FROM tblDetail d2 WHERE d2.dId IN (1,4))
GROUP BY m.id, m.title

我有很多桌子,我想像我提到的那样过滤它们。是否有更简单的方法或一般方式来做所有事情?

也......性能也很重要! 如果在Yii Activerecord中有解决方案,那就没关系了。

1 个答案:

答案 0 :(得分:1)

使用外部联接加入:

SELECT m.id, m.title FROM tblMaster m
LEFT OUTER JOIN tblDetail d on d.mId=m.id
WHERE d.dId is null