鲜明的对值SQL的
create table pairs (number a, number b)
当数据
1,1
1,1
1,1
2,4
2,4
3,2
3,2
5,1
等等
什么查询给了我不同的值数列b有这样我就可以看到
1,1
5,1
2,4
3,2
只有
我已经试过
select distinct (a) , b from pairs group by b
,但 “通过表情不是一组”
你是什么意思是要么
SELECT DISTINCT a, b FROM pairs;
或
SELECT a, b FROM pairs GROUP BY a, b;
这给了我会给你你作为e给的结果xample:
SELECT DISTINCT a, b
FROM pairs
:
select distinct (case a > b then (a,b) else (b,a) end) from pairs
的好东西是你没有通过使用组。
我非常希望这种方法,但继续遇到“ORA-00907:缺少右括号”的错误。这种方法对列进行排序的语法规则是什么?当然是 – Chris 2012-07-11 17:46:43
如果你只是想要一个计数的不同对。
做到这一点的最简单的方法是如下 SELECT COUNT(DISTINCT a,b) FROM pairs
以前的解决方案将列出所有的对,然后你不得不做第二次查询指望他们。
如果要要正确对待1,2和2,1为同一对,那么这将让你在MS-SQL的唯一列表:
SELECT DISTINCT
CASE WHEN a > b THEN a ELSE b END as a,
CASE WHEN a > b THEN b ELSE a END as b
FROM pairs
通过@meszias启发回答上述
!然而,在我读这个答案之前,我被困在如何做到这一点。谢谢。 – Greg 2016-11-26 16:21:45
现在我想到了,每列的分组与任何分组都是一样的。你打了我30秒。 +1 – JamesMLV 2009-08-25 20:17:59
JamesMLV,如果您有重复的行,按每列分组与不按任何分组相同。考虑'SELECT a,b,count(*)FROM pairs'的输出。 – 2009-08-25 20:22:06
奥斯卡现在我意识到我的查询会给你额外的列b = 1(我实际上误读它,知道你想要两个列,我假设你想要不同的行)... – 2009-08-25 20:26:33