在SQL Select命令的结果中,我有两行:
A | B
B | A
A | B和B | A对我来说意思相同。我想,在SQL命令中只选择其中一个。
我该怎么做?
我有一个select命令,我自己加入(自然连接),就像这样:
SELECT a.coloumn ,b.coloumn
FROM table a,table b
where .... (not important)
and b.coloumn IN (
SELECT coloumn
FROM table
where ... (the same like above)
)
and b.coloumn != a.coloumn ;
之后我有多个coloumns。
答案 0 :(得分:7)
您既没有告诉我们您的列名也没有告诉我们您的表名,但假设您在名为A
的表中有两列B
和the_table
,那么以下内容将会执行:
select distinct least(a,b), greatest(a,b)
from the_table;
答案 1 :(得分:2)
如果您想使用标准SQL 分组:
select (case when a < b then a else b end) as a,
(case when a < b then b else a end) as b,
count(*) as cnt
from table t
group by (case when a < b then a else b end),
(case when a < b then b else a end);
Oracle支持greatest()
和least()
函数,但并非所有数据库都支持。
答案 2 :(得分:1)
另一种可能的解决方案是:
select a, b from the_table
union
select b, a from the_table
即使有NULL
个值,这也可以正常工作。