如何在mySQL中选择等效但反转的元组

时间:2014-12-03 02:56:29

标签: mysql database relational-database

我有一个包含2列的表,填充了数值:

Column1     Column2
  1             2
  6             9
  2             1
  9             6
  1             3

元组(x,y)相当于我的问题域中的元组(y,x),我需要执行一个选择,其中我只得到其中一个。意思是,我想要一个返回的选择查询:

Column1   Column2
  1          2
  6          9
  1          3

在mySQL中完成此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

试试这个:

select t.*
from table t
where column1 < column2 or
      not exists (select 1
                  from table t2
                  where t2.column1 = t.column2 and t1.column2 = t.column1
                 );

如果您只想要配对,即使它们不在原始表中,您也可以这样做:

select least(column1, column2), greatest(column1, column2)
from table t
group by least(column1, column2), greatest(column1, column2)

答案 1 :(得分:1)

尝试这一个,这个查询更快

Select  Distinct 
        Case When Column1 >= Column2 Then Column2 else Column1 End as a,
        Case When Column1 >= Column2 Then Column1 else Column2 End as b
From #table

答案 2 :(得分:0)

如果您只有2个值,则可以按总和进行分组,并使用minmax选择每个值。

select min(Column1), max(Column2)
from Table1
group by (Column1+Column2)

http://sqlfiddle.com/#!2/b856e/1