2013-05-09 81 views
1

所以,如果我這樣做:在SELECT DISTINCT語句中使用MySQL的MD5()操作忽略DISTINCT子句

SELECT DISTINCT column_1, column_2, MD5(rand()) 
FROM table 

我得到n行數據是不同的行數正確。

如果我這樣做:

SELECT DISTINCT column_1, column_2, "whatever" 
FROM table 

以上的回報N + M這基本上是所有從表中的行。

這裏發生了什麼?

+0

因此,您現在正在通過column_1,column_2向表組中選擇「blah」?或者你需要這個信息的答案嗎? – gillyspy 2013-05-09 03:03:07

回答

1

下破了你的查詢:

SELECT DISTINCT COLUMN_1,COLUMN_2 FROM表

將返回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 

在另一方面 - 傳遞相同的值對查詢實際上將返回results.i.e的不同數目。 SELECT DISTINCT column_2,「whatever」FROM表將返回3行:

26, whatever 
27, whatever 
25, whatever