gpt4 book ai didi

sql - 如何在左右连接顺序中获得完整的外部连接

转载 作者:行者123 更新时间:2023-12-04 00:44:34 26 4
gpt4 key购买 nike

请引用下面的脚本

    declare @table1 table
(
col1 int
)

declare @table2 table
(
col2 int
)

insert into @table1 values(1)
insert into @table1 values(2)
insert into @table1 values(3)
insert into @table1 values(5)
insert into @table1 values(7)

insert into @table2 values(1)
insert into @table2 values(3)
insert into @table2 values(3)
insert into @table2 values(6)
insert into @table2 values(4)
insert into @table2 values(7)

案例一:

select * from @table1 a left outer join @table2 b on a.col1=b.col2
order by col1

结果 1:

         col1       col2        
----------- -----------
| 1 | 1 |
| 2 | NULL |
| 3 | 3 |
| 3 | 3 |
| 5 | NULL |
| 7 | 7 |
---------------------------

案例二:

select * from @table1 a right outer join @table2 b on a.col1=b.col2
order by col2

结果 2:

         col1             col2        
----------- -----------
| 1 | 1 |
| 3 | 3 |
| 3 | 3 |
| NULL | 4 |
| NULL | 6 |
| 7 | 7 |
---------------------------

实际案例:

select * from @table1 a full outer join @table2 b on a.col1=b.col2

实际结果:

         col1        col2        
----------- -----------
| 1 | 1 |
| 2 | NULL |
| 3 | 3 |
| 3 | 3 |
| 5 | NULL |
| 7 | 7 |
| NULL | 6 |
| NULL | 4 |
---------------------------

预期结果:

         col1        col2        
----------- -----------
| 1 | 1 |
| 2 | NULL |
| 3 | 3 |
| 3 | 3 |
| NULL | 4 |
| 5 | NULL |
| NULL | 6 |
| 7 | 7 |
---------------------------

我尝试使用左右联接查询联合所有,但它使结果集加倍。有什么方法可以获得预期的输出。

谢谢,亦森。

最佳答案

你可以使用

SELECT *
FROM @table1 a
FULL OUTER JOIN @table2 b
ON a.col1 = b.col2
ORDER BY Isnull(col1, col2)

获得您想要的订单。如果没有 ORDER BY,则无法保证顺序。

关于sql - 如何在左右连接顺序中获得完整的外部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com