假设我有 2 个 sql 查询。表 A 包含,
ID
--
1
1
1
2
3
4
这个查询,
Select distinct ID1 FROM A
给我,
ID
--
1
2
3
4
第二个
Select ID2 FROM B
这给了我,
ID2
--
8
21
33
43
2 如何获得这个记录集?
ID1 ID2
--- ---
1 8
2 21
3 33
4 43
假设我有 2 个 sql 查询。表 A 包含,
ID
--
1
1
1
2
3
4
这个查询,
Select distinct ID1 FROM A
给我,
ID
--
1
2
3
4
第二个
Select ID2 FROM B
这给了我,
ID2
--
8
21
33
43
2 如何获得这个记录集?
ID1 ID2
--- ---
1 8
2 21
3 33
4 43
您没有指定 sql server 的版本,但如果您使用的是 sql server 2008+,则可以执行此操作的一种方法是将 添加row_number()
到每个表,然后加入row_number()
:
select a.id, b.id2
from
(
select id, row_number() over(order by id) rn
from a
) a
inner join
(
select id2, row_number() over(order by id2) rn
from b
) b
on a.rn = b.rn
如果您只想使用DISTINCT
值,那么您应该能够使用:
select a.id, b.id2
from
(
select id, row_number() over(order by id) rn
from
(
select distinct id
from a
) a
) a
inner join
(
select id2, row_number() over(order by id2) rn
from b
) b
on a.rn = b.rn;
如果每个表中有不同数量的行,那么您可能需要使用FULL OUTER JOIN
:
select a.id, b.id2
from
(
select id, row_number() over(order by id) rn
from
(
select distinct id
from a
) a
) a
full outer join
(
select id2, row_number() over(order by id2) rn
from b
) b
on a.rn = b.rn;