我可以在表AS上选择不同的2个字段(provfrom,provto) 条件: - 2个字段的值在一行中永远不会相同 - 字段provfrom中的值可以在字段provo内,但在不同的行中 - 字段provto中的值可以在字段provfrom内但在不同的行
示例: 我有2列如下
-------------------------
| provfrom | provto |
-------------------------
| 2 | 4 |
| 3 | 7 |
| 3 | 7 |
| 5 | 2 |
| 5 | 2 |
| 7 | 2 |
| 7 | 2 |
| 1 | 5 |
| 2 | 5 |
| 2 | 8 |
| 5 | 8 |
-------------------------
disticnt我想要的结果如下
-------------
| prov |
-------------
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 7 |
| 8 |
-------------
我可以在sql server中执行此操作吗? 我试图通过探索谷歌找到,但没有找到它
由于
答案 0 :(得分:4)
您可以使用Union
关键字,它会从两个表中提供distinct
个元素
select provfrom from mytable
union
select provTo from mytable
答案 1 :(得分:2)
您可以使用union
或使用apply
执行此操作,应用的IO较少,因此我会使用应用查询。
create table #temp
(
provfrom tinyint,
provto tinyint
);
insert into #temp (provfrom, provto)
values (2,4),(3,7),(3,7),
(5,2),(5,2),(7,2),
(7,2),(1,5),(2,5),
(2,8),(5,8);
set statistics io on;
select distinct
a.provfromto
from #temp as t
cross apply (values (t.provfrom),(t.provto)) as a(provfromto);
select provfrom from #temp
union
select provTo from #temp
set statistics io off;
drop table #temp;
答案 2 :(得分:1)
试试这个:
select t.prov
from
(select provfrom as prov
from yourtable
union
select provto
from yourtable) as t
order by t.prov
UNION
函数应用一个不同的子句,因此您每次出现都会获得所有值。
有关排序结果集的外部查询