【发布时间】:2019-02-09 05:33:16
【问题描述】:
我想通过下面的玩具示例说明 DISTINCT 的工作原理。假设你有一个这样的表,有 2 列,只有 2 行数据:
SELECT *
FROM table1;
colA colB
A B
A C
假设我运行了一个 SELECT DISTINCT 查询:
SELECT DISTINCT colA, colB
FROM table1;
上面的查询会返回以下哪个结果?
结果可能性1:
A B
A C
这种可能性的想法是,虽然 colA 上的值不是不同的,但当考虑两列时,整个返回的行是唯一的或不同的。由于SELECT DISTINCT colA, colB 中colA 和colB 之间的逗号的影响以及它是否有助于将DISTINCT 限制为colA,我不确定。
结果可能性2:
A B
结果可能性 3:
A C
【问题讨论】:
-
可能性 1。Distinct 适用于所有选定的列。 如果您刚刚选择 colA,那么您将获得 1 条记录结果 A:如果您只是选择 distict 列 B 然后你会得到 B 和 C。如果你有第三条记录 A,B,那么在选择不同的 colb 时你仍然只会得到两条记录,因为第三条记录将是第一条记录的副本。当使用不同的 colA 和 ColB 时,您只会得到 2 条记录,因为第三条记录再次与记录 1 完全相同。