我有一条MySQL声明几乎可以工作。我只需要一次调整就可以完全正常工作,但我无法弄清楚如何去做。当所有子记录符合条件时,MySQL会返回父项
我想从父表中返回具有子记录的所有行,但仅当所有子状态都为1时才有效。子表的ID位于父表的单个逗号分隔字段中。
这里是我的表怎么看
parent
ID IDS
1 1001,1003,1004
2 1003, 1005
child
ID STATUS
1001 1
1003 1
1004 0
1005 1
我想查询只返回父ID 2,因为子记录1003 & 1005都状态1.我不想父ID 1返回,因为子记录1004状态为0.
这是迄今为止我所使用的SQL,它错误地返回了两个父记录。我认为这是这样做的,因为如果任何子记录的状态为1,则返回父项。
SELECT *
FROM parent p
INNER JOIN child c ON c.id IN (p.ids) AND c.status = 1
GROUP BY p.id
如果所有的子记录都是状态1,是否有简单的方法只返回父记录?
谢谢Darshan。我更喜欢我的SQL,因为它对我来说似乎更清洁!我关于一对多关系的观点很重要,但这就是桌子的设计方式,所以我只需要使用它:( – Damian