0

我有一个包含 3 个字段的表。

ID    Name     ParentID     Active
1     A        0            1
2     B        0            1
3     C        2            1

现在,我想要一个查询,如果存在ParentID> 0 且处于活动状态的行,则跳过其父 id (2) 的行。

请建议一个 MySQL 查询来实现这一点。

谢谢你,胡拉姆

编辑:谢谢大家,终于解决并标记了正确的答案。

4

4 回答 4

2

这应该工作:

select * from test where id not in ( select parent_id from test where parent_id > 0 and active = 1 );
于 2012-04-13T11:07:52.763 回答
1

也许是这样的:

SELECT * FROM Table1 WHERE (NOT ParentID > 0 AND Active=1) OR Active=0
于 2012-04-13T10:57:41.867 回答
1

我不确定这个问题是否很清楚。您的意思是读取其 ID 不在其行处于活动状态的父列中的所有行吗?如果是这样:

SELECT * FROM mytable
WHERE id NOT IN (
    SELECT ParentID FROM mytable WHERE Active = 1
);
于 2012-04-13T11:01:34.140 回答
1
SELECT t1.*
FROM tbl t1
LEFT JOIN tbl t2
    ON t1.ID = t2.ParentID
    AND t2.Active = 1
WHERE t2.id IS NULL
于 2012-04-13T11:01:55.417 回答