我有一个包含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中完成此操作的最佳方法是什么?
答案 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个值,则可以按总和进行分组,并使用min
和max
选择每个值。
select min(Column1), max(Column2)
from Table1
group by (Column1+Column2)