我想通过下面的玩具示例澄清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
上的值不明显,但当考虑两列时,整个返回的行是唯一的或不同的。我之所以不确定,是因为colA
中colB
和SELECT DISTINCT colA, colB
之间逗号的影响,以及它是否有助于将DISTINCT
限制为colA
。
结果可能性2:
A B
结果可能性3:
A C
答案 0 :(得分:3)
DISTINCT适用于完整行。
A B
A C
以上两行不同,结果将与结果可能性1相同 即
A B
A C
答案 1 :(得分:2)
也许这会有所帮助。这个查询:
SELECT DISTINCT colA, colB
FROM table1;
在功能上等同于:
SELECT colA, colB
FROM table1
GROUP BY colA, colB;
它会返回数据中出现的所有colA
/ colB
对。