SQL 服务器 CTE 查询重复值
SQL Server CTE query duplicated values
我的table如下:
ID Name Parent
1 Joe -
2 James -
3 Mike 1
4 Lewis 3
5 Anne 2
6 Lucy 4
输出是预期的,但我的所有值都与此查询重复:
with cte as (
select name
from Materials
where name= 'Joe'
union all
select Materials.name
from cte join
Materials
on Materials.parent = cte.id
)
select name, id
from cte;
输出:
Joe
Joe
Mike
Lewis
Lucy
Mike
Lewis
Lucy
知道哪里出了问题吗?
您的样本数据不重复。看到这个 demo.
一个简单的解决方案是使用 select distinct
:
with cte as (
select m.name
from Materials m
where m.name = 'Joe'
union all
select m.name
from cte join
Materials m
on Materials.parent = cte.id
)
select distinct name
from cte;
我的table如下:
ID Name Parent
1 Joe -
2 James -
3 Mike 1
4 Lewis 3
5 Anne 2
6 Lucy 4
输出是预期的,但我的所有值都与此查询重复:
with cte as (
select name
from Materials
where name= 'Joe'
union all
select Materials.name
from cte join
Materials
on Materials.parent = cte.id
)
select name, id
from cte;
输出:
Joe
Joe
Mike
Lewis
Lucy
Mike
Lewis
Lucy
知道哪里出了问题吗?
您的样本数据不重复。看到这个 demo.
一个简单的解决方案是使用 select distinct
:
with cte as (
select m.name
from Materials m
where m.name = 'Joe'
union all
select m.name
from cte join
Materials m
on Materials.parent = cte.id
)
select distinct name
from cte;