我有一个3字段的表。建议一个MySQL查询
ID Name ParentID Active
1 A 0 1
2 B 0 1
3 C 2 1
现在,我想查询,其中如果不存在具有ParentID
> 0和活性,然后用它的父ID的行(2)被跳过行。
请建议单个MySQL查询来实现此目的。
谢谢 Khuram
编辑:谢谢你们,终于解决并标明正确的答案。
我有一个3字段的表。建议一个MySQL查询
ID Name ParentID Active
1 A 0 1
2 B 0 1
3 C 2 1
现在,我想查询,其中如果不存在具有ParentID
> 0和活性,然后用它的父ID的行(2)被跳过行。
请建议单个MySQL查询来实现此目的。
谢谢 Khuram
编辑:谢谢你们,终于解决并标明正确的答案。
我不知道这个问题是很清楚的。你的意思是读取所有行的ID不在父行中,其行是活动的?如果是这样的:
SELECT * FROM mytable
WHERE id NOT IN (
SELECT ParentID FROM mytable WHERE Active = 1
);
如果第3行处于活动状态,则选择1,3,如果第3行处于非活动状态,则选择1,2 – Khuram 2012-04-13 11:03:21
SELECT t1.*
FROM tbl t1
LEFT JOIN tbl t2
ON t1.ID = t2.ParentID
AND t2.Active = 1
WHERE t2.id IS NULL
那你试试这么远吗? – mcha 2012-04-13 10:50:45
如果您从父行的角度重写您的问题(应该省略),您将有一个合理的实施启动。 – 2012-04-13 10:59:43
相信我,我们很好地适应写作的疑问,但是这个问题让我头痛不已。也许是MySQL案例> – Khuram 2012-04-13 11:00:45