这是一个如此简单的问题,但由于某种原因,我今天无法理解它。
我有两个实体:-title
和product
分别命名为tbl_title
和tbl_product
。每个title
可以有许多products
。
产品表有一个名为unwanted
的字段,可以是null
、0
或1
。
我希望根据alltitle
s(all)的product
设置为unwanted
的位置选择all1
s。换言之,我希望根据所有满足某个条件的子对象来选择父对象。所以如果一个title
有一个product
是unwanted
但另一个不是,我不希望这个title
进入结果集。
当我试着这么做的时候,我脑子里想的最多的是:
SELECT * FROM `tbl_title`
left join tbl_product on tbl_product.title_id = tbl_title.id
where tbl_product.unwanted = 1
group by tbl_title.id
这显然不起作用。
那么如何编写这样的查询代码呢?
最佳答案
select * from tbl_title
where id not in (select title_id from tbl_product where unwanted = 0)
在英语中,此查询将删除所有具有所需产品的标题。
从样式的角度来看,最好调用您的列
wanted
,因为unwanted = 0
是wanted = 1
的双负数。总是比较容易让你的头在积极的方面。