id name id_parent
1 美国 0
2 中国 0
3 浙江 2
4 上海 2
5 江苏 2
6 英国 0需要显示的结果是
1 美国
3 浙江
4 上海
5 江苏
6 英国就是去掉2 中国。 因为3,4,5都是2中国的子集。即有子集的话,父集就不显示,只显示子集。
请教这样一个sql语句该怎么写啊?????
1 美国 0
2 中国 0
3 浙江 2
4 上海 2
5 江苏 2
6 英国 0需要显示的结果是
1 美国
3 浙江
4 上海
5 江苏
6 英国就是去掉2 中国。 因为3,4,5都是2中国的子集。即有子集的话,父集就不显示,只显示子集。
请教这样一个sql语句该怎么写啊?????
Id INT,
[name] NVARCHAR(50),
id_Parent INT)INSERT INTO #T
SELECT 1,'美国',0 UNION
SELECT 2,'中国',0 UNION
SELECT 3,'浙江',2 UNION
SELECT 4,'上海',2 UNION
SELECT 5,'江苏',2 UNION
SELECT 6,'英国',0 SELECT * FROM #T a WHERE NOT EXISTS(SELECT 1 FROM #T WHERE a.id = id_parent AND a.id != id)
from tb a
where not exists(select 1 from tb b where a.id=b.id_parent )
Id INT,
[name] NVARCHAR(50),
id_Parent INT)INSERT INTO tb
SELECT 1,'美国',0 UNION
SELECT 2,'中国',0 UNION
SELECT 3,'浙江',2 UNION
SELECT 4,'上海',2 UNION
SELECT 5,'江苏',2 UNION
SELECT 6,'英国',0 select id,name
from tb a
where not exists(select 1 from tb b where a.id=b.id_parent )
/*
1 美国
3 浙江
4 上海
5 江苏
6 英国
*/