可能重複:
Is there any difference between Group By and DistinctMySQL - GROUP BY和DISTINCT有什麼區別?
什麼在MySQL查詢GROUP BY和DISTINCT之間的區別?
可能重複:
Is there any difference between Group By and DistinctMySQL - GROUP BY和DISTINCT有什麼區別?
什麼在MySQL查詢GROUP BY和DISTINCT之間的區別?
的
Is there any difference between GROUP BY and DISTINCT
複製它已經在這裏
討論如果仍想在這裏
井組通過聽取和獨特都有自己的用途。
Distinct用於過濾滿足查詢條件的記錄中的唯一記錄。
Group by子句用於對啓動集合函數的數據進行分組,並根據group by子句中的列返回輸出。它有其自身的侷限性,除了聚合函數外,select查詢中的所有列都必須是Group by子句的一部分。
因此,即使您可以使用distinct和group by clause返回的相同數據,也可以使用distinct。見下面的例子
select col1,col2,col3,col4,col5,col6,col7,col8,col9 from table group by col1,col2,col3,col4,col5,col6,col7,col8,col9
可以寫成
select distinct col1,col2,col3,col4,col5,col6,col7,col8,col9 from table
它會讓你的生活更輕鬆,當你在選擇列表中的多個列。但同時,如果您需要顯示總和(col10)以及上面的列,則必須使用分組依據。在這種情況下,明顯不會起作用。
如
select col1,col2,col3,col4,col5,col6,col7,col8,col9,sum(col10) from table group by col1,col2,col3,col4,col5,col6,col7,col8,col9
希望這有助於。
感謝您的回覆 – sreenavc 2010-12-18 10:06:08
DISTINCT
僅適用於整行。不要誤入思維SELECT DISTINCT(A), B
做一些不同的事情。這相當於SELECT DISTINCT A, B
。
另一方面,GROUP BY
創建一個包含在單個列(或多列或任意表達式)中共享每個不同值的所有行的組。使用GROUP BY
,您可以使用聚合函數,如COUNT
和MAX
。這不適用於DISTINCT
。
DISTINCT
。GROUP BY
。只到MySQL應用於另一個不同之處是,除非另行指定GROUP BY
也意味着一個ORDER BY
。下面是如果你使用DISTINCT
會發生什麼:
SELECT DISTINCT a FROM table1
結果:
2 1
但使用GROUP BY
結果會在排序順序:
SELECT a FROM table1 GROUP BY a
結果:
1 2
由於沒有使用DISTINCT
進行排序的結果在可以使用的情況下更快。注意:如果您不需要使用GROUP BY
進行排序,則可以添加ORDER BY NULL
以提高性能。
我標記爲重複,但後來我意識到這個問題是MySQL的具體問題,另一個是一般的SQL。 MySQL有另一個不是由SQL標準指定的區別。因此,我不再覺得這是完全重複的,但我不能刪除我的投票。 – 2010-12-18 10:11:11