嗨,我对此问题感到困惑,因为我需要同一列的两个实例的唯一组合。
假设我有一个表名为Animal的表。我想要动物名称的所有“独特”组合,而不是重复它自己或另一个已经存在的行。
示例数据:
Name
-------
Mouse
Cat
Dog
我想要的结果是:
Name1 Name2
----- -----
Mouse Cat
Mouse Dog
Cat Dog
我写了以下查询:
SELECT DISTINCT A1.name AS Name1, A2.name as Name2
FROM Animal A1, Animal A2
WHERE A1.name <> A2.name;
取而代之的是以下结果:
Name1 Name2
----- -----
Mouse Cat
Mouse Dog
Cat Mouse
Cat Dog
Dog Mouse
Dog Cat
我希望我有意义。我不想要两个组合的副本,无论它出现在左侧还是右侧。就“不同”而言,行是截然不同的。那么有什么方法可以消除双重上升吗?
答案 0 :(得分:7)
要查找唯一组合,只需将<>
更改为<
:
WHERE A1.name < A2.name;
^^^