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 に答える