消除sql语句

时间:2018-02-21 08:26:47

标签: sql sql-server tsql

我有一个Sql语句,其结果类似于

  TagNo1         TagNo2
 ---------------------------
   63516         63546
   63546         63516

如何设置我只需要一条记录。例如

    TagNo1         TagNo2
 ---------------------------
     63516         63546

或其他,没有区别。因为对我来说是一样的吗?

谢谢

2 个答案:

答案 0 :(得分:4)

如果TagNo1小于或等于TagNo2,则返回一行。或者,如果切换的值不存在。

select distinct TagNo1, TagNo2
from tablename t1
where TagNo1 <= TagNo2
   or not exists (select 1 from tablename t2
                  where t1.TagNo1 = t2.TagNo2
                    and t1.TagNo2 = t2.TagNo1)

如果TagNo1 = TagNo2,请select distinct以避免重复。

或使用case表达式:

select distinct case when TagNo1 <= TagNo2 then TagNo1 else TagNo2 end,
                case when TagNo1 >= TagNo2 then TagNo1 else TagNo2 end
from tablename

答案 1 :(得分:1)

declare @t table (col1 int, col2 int);
insert into @t values (63516, 63546), (63546, 63516);

select col1, col2 
from @t 
where col1 <= col2 
union 
select col2, col1 
from @t 
where col2 < col1