【发布时间】:2011-08-16 20:23:49
【问题描述】:
我有一个表格,里面有这样的数据:
[ID, Name]
1, Bob
1, Joe
1, Joe
1, Bob
我想检索显示具有相同 ID 的记录之间关系的记录列表。 例如,我想从我的查询中得到以下结果集:
Bob, Joe
Joe, Bob
Bob, Bob
Joe, Joe
这显示了表格中每个项目的“从”和“到”。
我可以使用以下查询得到这个结果:
SELECT DISTINCT [NAME]
FROM TABLE A
INNER JOIN TABLE B ON A.ID = B.ID
无论如何,我是否可以在不使用 select 语句中的“distinct”的情况下获得相同的结果集?如果我不包括不同的,我会返回 16 条记录,而不是 4 条。
【问题讨论】:
-
不应该使用 DISTINCT 的任何特殊原因?
-
这是一个问题,我遇到了一个更大的查询,需要超过 2.5 分钟才能运行。我正在尝试摆脱该查询上不同的外部级别,希望它能提高性能,这只是这个概念的一个简单说明。
-
为了让我们清楚,您能否发布查询中提到的表 A/B 的架构/示例数据?
-
嗯,对于这里的示例,架构和示例数据与我在上面发布的完全一样。两列,一列叫ID,一列叫“姓名”,数据如上图。
-
对,但在我看来,您要么将表连接到自身,要么有两个表(在本例中)具有相同的架构,我只是想看看它是哪一个。