2012-10-24 144 views
4

是否有這之間的性能或其它區別:MySQL的不同行或不同領域

SELECT distinct(users.id),2 as someFieldName ,0 as someOtherFieldName 
From users join ... 

這:

SELECT distinct users.id ,2 as someFieldName ,0 as someOtherFieldName 
From users join ... 

結果集作爲INSERT語句的一部分,選擇威力由於連接多次返回相同的用戶ID(此處未顯示)

我正在使用mysql。

回答

4

沒有「獨特的領域」這樣的東西。您的第一個語法與第二個語法的解析方式相同:括號僅包圍字段表達式。你也可以這樣寫:

SELECT DISTINCT (users.id), (2) AS someFieldName, (0) AS someOtherFieldName 

它們都是等價的。

如果你想避免您不斷列的比較,你也可以使用GROUP BY

SELECT users.id, 2 AS someFieldName, 0 AS someOtherFieldName 
FROM  users JOIN ... 
GROUP BY users.id 
3

有在這種情況下只對行工作沒有差別DISTINCT

From the SELECT docs

的ALL和DISTINCT選項指定重複的行是否應該 返回。 ALL(默認值)指定返回的所有匹配行應爲 ,包括重複項。 DISTINCT指定從結果集中刪除 重複行。指定 選項是錯誤的。 DISTINCTROW是DISTINCT的同義詞。