2013-01-03 57 views
0

我有一個表,看起來像下面這個簡單的例子。我想打一個select語句 顯示所有的記錄,每一個不同的類別(升序)gouped,每個類別組的成員應該按字母順序水果名稱進行排序:GROUP BY類別和訂單類別

ID  Fruit  Category 
_________________________________________ 
1   Apple  200 
2   Pear   200 
3   Banana  300 
4   Peach  300 
5   Mango  300 
6   Tomato  600 
7   Cucomber  600 
8   Jackfruit 300 
9   Salad  600 
10   Cranberries 200   

我想不出如何在SELECT中結合ORDER BY和GROUP BY。 任何幫助將被認爲。

謝謝。

編輯: 這是我期待的輸出:

ID  Fruit  Category 
_________________________________________ 
1   Apple  200 
10   Cranberries 200 
2   Pear   200 
3   Banana  300 
8   Jackfruit 300 
5   Mango  300 
4   Peach  300 
7   Cucomber  600 
9   Salad  600 
6   Tomato  600 
+1

如果你談論的是結合所有將每個類別的行分成一行,你真的不應該在SQL中這樣做。否則,爲什麼只按類別排序,然後按水果排序? –

+0

你能顯示你期望的輸出嗎? –

+0

用預期輸出編輯的文章 – micknt

回答

-1
SELECT * 
FROM table_name 
GROUP BY category 
ORDER BY category ASC 
+0

你不能由使用的查詢SELECT * FROM組的結果集。 – hkutluay

+1

我認爲@hkutluay語句的解釋是:像「在SQL Server(和標準SQL),你必須列出在GROUP BY子句對選擇列表中的非集合列的,除非你使用MySQL或其他通常不適用的條件。此外,儘管您確保類別按順序排列,但名稱並非如此。 GROUP BY子句實際上是多餘的;一個ORDER BY子句是所有需要的。 –

7
select* from table_name order by category asc, fruit 
2

您可以使用此。

select* from table_name order by column_name asc // use your column name 
+2

歡迎來到Stack Overflow。麻煩的是,應該在排序中使用兩列,而不是一列。另外,問題中給出了列名(但不包括表名!)。 –

1

如前所述,此處不需要GROUP BY。 GROUP BY用於聚合行。例如:

SELECT category, count(category) as [count] from myTable GROUP BY category 

會給你這樣的事情

category count 
-------- ----- 
200   3 
300   4 
600   3 

你只是想通過兩列順序,使所有你需要的是

SELECT * FROM myTable ORDER BY Fruit, Category