mysql - 如何通过 NOT IN 过滤主明细表?

标签 mysql master-detail

我有两张这样的 table

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中有解决方案就可以了。

最佳答案

使用外连接:

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

关于mysql - 如何通过 NOT IN 过滤主明细表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684550/

相关文章:

php - 用于 PHP 的 jTables 过滤

php - 在 For 循环中运行查询

android - 使用共享 View 模型掌握细节流程

delphi - DevExpress网格中的奇怪过滤器行为

angularjs - 如何让 ng-grid 隐藏某些行

php - 正在寻找 PHP 书籍示例?

MySQL:在同一列上有 AND 条件

jquery - 在本地存储保存功能上,也将变量传递给 MySQL 数据库

ios - Swift iOS -SplitViewController 不会让我隐藏 StatusBar?

ios - PerformSegueWithIdentifier 随机崩溃