2013-04-10 56 views
0

我有一個查詢在查詢中使用group by有什麼區別嗎?

SELECT bk_publisher, bk_price FROM books 
GROUP BY bk_price, bk_publisher 

SELECT bk_publisher ,bk_price FROM books 

兩者都返回相同的結果。意思是我在我的表中有12條記錄,兩條查詢都返回了12條記錄。有什麼不同 ?雖然我正在使用group by,這與集合函數一起使用。但是我想知道的是在這裏做出改變嗎?

回答

2
SELECT bk_publisher, bk_price FROM books 
GROUP BY bk_price, bk_publisher 

即使您的表包含重複的數據,也會得到不同的(發佈商,價格)對。

+0

你是什麼意思'不同的(發行商,價格)'對?我有bk_publisher的重複記錄。如果我使用'SELECT bk_publisher AS發佈者 ,SUM(bk_price)AS books_total FROM books GROUP BY bk_publisher'。然後我明白我有四個重複的記錄,通過使用group by組合成一個記錄。 – Basit 2013-04-10 09:31:51

+0

你將有一個記錄每對(發佈者,價格)。所以你可以在發佈商上有重複,但是價格不同,他們都會被退回。 – MarcinJuraszek 2013-04-10 09:34:32

+0

是的,我有重複,但價格是不同的。你的意思是如果我讓兩個記錄相同,就像我有四個記錄'bk_publisher = wiley'不同的價格。如果我做兩個懷氏唱片的價格相同,然後通過只顯示不同的記錄分組,意味着沒有重複?是嗎 ?而沒有通過查詢分組顯示所有記錄。我對嗎 ? – Basit 2013-04-10 09:44:26

0

SQL group by一些相同的值可以幫助你組不同的結果(使用其他值聚合函數)

你的情況,這並不意味着什麼,但是當你想聚合值基於相同的域,您使用通過...分組。

例如,如果你想獲得出版商的最大價格:

SELECT bk_publisher, max(bk_price) FROM books 
GROUP BY bk_publisher 
0

的GROUP BY語句用於對結果進行分組設置由一個或多個columns.Group通過使用你的時候有重複的數據,你想每個條目的單個記錄。

0

當您使用GROUP BY時,它會將具有相同列的GROUP BY中的多個行擠壓爲輸出中的單個行。

這也意味着,在一般情況下,在SELECT列表中提到的所有其他列必須在聚合函數裹得像個sum()avg()count()

一些SQL引擎,如MySQL允許不使用聚合,但很多人考慮這個錯誤。

0

GROUP BY子句顯然沒有效果,因爲沒有bk_price, bk_publisher值的重複組合。