如果我这样做:
SELECT DISTINCT column_1, column_2, MD5(rand())
FROM table
我得到n行数这是正确的不同行数
如果我这样做:
SELECT DISTINCT column_1, column_2, "whatever"
FROM table
上面返回n+m,这基本上是表中的所有行。
这是怎么回事?
查询的细分:
SELECT DISTINCT column_1, column_2 FROM table将返回column_1和column_2的不同结果。例如,如果你有:
column_1 column_2
Peter 26
John 27
Adam 26
Fred 25
结果将是所有四行。
包含MD5(rand())将生成一个新列,因此将返回表中的所有结果(与您实际报告的内容相反-不同行的数量)。即SELECT DISTINCT column_2, MD5(rand()) FROM表也将返回4行:
26, 2c346f92e3ccccfeccc75b1f8fbec910
27, 6f8af159c2658cf8a33d0e29419a71a6
26, 4f7f54cd9527c509da322caeb31c73c9
25, 01a4a55f61cba7ef922180b5520698d2
另一方面,传递相同的值给查询实际上会返回不同数量的结果。SELECT DISTINCT column_2, "whatever" FROM表将返回3行:
26, whatever
27, whatever
25, whatever