仅选择两列的一个组合

时间:2013-12-19 23:10:13

标签: sql

我有一个表,其中包含对应的每一行。例如:

┏━━━━━━━━━━┳━━━━━━━━━━┓
┃ Column 1 ┃ Column 2 ┃
┣━━━━━━━━━━╋━━━━━━━━━━┫
┃ A        ┃ B        ┃
┣━━━━━━━━━━╋━━━━━━━━━━┫
┃ B        ┃ A        ┃
┗━━━━━━━━━━┻━━━━━━━━━━┛

我只想要一个组合:

┏━━━━━━━━━━┳━━━━━━━━━━┓
┃ Column 1 ┃ Column 2 ┃
┣━━━━━━━━━━╋━━━━━━━━━━┫
┃ A        ┃ B        ┃
┗━━━━━━━━━━┻━━━━━━━━━━┛

这样的陈述会是什么样的?

1 个答案:

答案 0 :(得分:3)

这是一种方式:

select *
from t
where column1 < column2;

这假设所有对确实在表中(或者至少每对中的第一对都在表中)。

或者,这是另一种方式:

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

即使表格中只有一半配对,这也有效。