sql独特的记录拼图

Mic*_*One 7 sql sql-server

难题是选择独特的对.以下示例中的语法适用于Mssql

declare @t table (a int, b int)

insert into @t (a,b) values (1,2)
insert into @t (a,b) values (2,1)
insert into @t (a,b) values (1,3)
insert into @t (a,b) values (3,1)
insert into @t (a,b) values (5,6)


select * from @t -- it outputs 5 records.
Run Code Online (Sandbox Code Playgroud)

我需要获得唯一的对,而不管顺序a,b,这应该给我三条记录

输出应该是

(1,2),(1,3),(5,6)
Run Code Online (Sandbox Code Playgroud)

我没有想法,会很感激帮助:)

Mar*_*ith 10

单向(演示)将是

SELECT DISTINCT v.a,
                v.b
FROM   @t
       CROSS APPLY (VALUES(a,b),
                          (b,a)) v(a, b)
WHERE  v.a <= v.b 
Run Code Online (Sandbox Code Playgroud)


Dav*_*itz 3

select      distinct 

            case when a<b then a else b end
           ,case when a<b then b else a end 

from        @t
;
Run Code Online (Sandbox Code Playgroud)