Mysql 选择不同的对值

Mysql 选择不同的对值,mysql,Mysql,我有下表,我希望为ex提取所有唯一对: +------+------+ | a | b | +------+------+ | 1 | 2 | | 1 | 3 | | 1 | 6 | | 1 | 9 | | 2 | 1 | | 2 | 3 | | 3 | 1 | | 3 | 2 | | 4 | 1 | | 6 | 5 | +------+------+ 应该把它放

我有下表,我希望为ex提取所有唯一对:

+------+------+
| a    | b    |
+------+------+
|    1 |    2 |
|    1 |    3 |
|    1 |    6 |
|    1 |    9 |
|    2 |    1 |
|    2 |    3 |
|    3 |    1 |
|    3 |    2 |
|    4 |    1 |
|    6 |    5 |
+------+------+
应该把它放出来

+------+------+
| a    | b    |
+------+------+
|    1 |    2 |
|    1 |    3 |
|    1 |    6 |
|    1 |    9 |
|    2 |    3 |
|    6 |    5 |
+------+------+
试试这个:

select least(a, b) as a, greatest(a, b) as b
from table t
group by least(a, b), greatest(a, b);
这可能会产生不在原始表中的输出,例如5/6而不是6/5。如果要保留原始顺序,请执行以下操作:

select distinct a, b
from table t
where a <= b or
      not exists (select 1 from table t2 where t2.b = t.a and t2.a = t.b);
也就是说,选择a小于或等于b或a大于b且不存在具有其他顺序值的行的所有对

SELECT   a,b
FROM     tbl //your tableName
GROUP BY a,b
HAVING   COUNT(*) > 1
试试这个,我的朋友

SELECT   *
FROM     NAMES2
GROUP BY Id,id2
HAVING   COUNT(*) > 1;

这怎么样?

如果列和顺序无关紧要,请从中选择distinct leasta、b、greatesta、btest@Gordon不过,它确实是一个只包含低值代码的解决方案转储。也许这就是为什么它被否决的原因——我们不知道。只有代码的答案在Stackoverflow上的价值很低,因为它们对未来数千名研究人员的教育/授权作用微乎其微。