2012-03-19 59 views
2

有沒有一種方法來使用一列的GROUP BY,但它可以等於給定組的值的集合?有沒有一種方法來使用一列的GROUP BY,但它可以等於給定的一組值?

例如,說我有記錄:

id = 1, quantity = 40, type = 1 
id = 2, quantity = 50, type = 2 
id = 3, quantity = 20, type = 1 
id = 4, quantity = 30, type = 3 
id = 5, quantity = 60, type = 3 

而且我想組1型和2在一起,組類型3S自己。是否有一種簡單的方法可以在MySQL中執行此操作,或者在獲得結果後我是否更好地執行此操作?

回答

2

當然,你可以使用CASE語句創建一個自定義組:

select case when id in (1,2) 
       then '1,2' 
       else id 
       end as custom_id_group 
     ... 
group by case when id in (1,2) 
       then '1,2' 
       else id 
       end 

編輯:
在GROUP BY子句中使用CASE語句的結果(通過別名)在RDBMS中並不普遍支持,但更新版本的MySQL(> = 5)將支持它。

+0

完美。是否可以在我的GROUP BY子句中使用CASEd列'custom_id_group',還是必須重複上述兩次CASE? – dqhendricks 2012-03-19 22:42:22

+0

更新版本的MySQL絕對支持使用別名。不確定早期版本。將更新答案以包含有關此信息。由於有時會與多個RDBMS一起工作,所以我會盡可能使用最系統無關的代碼,但在這種情況下這可能不是問題。 – bernie 2012-03-19 22:44:33

0

我建議使用兩個查詢和工會的結果

0

也許,如果你使用類似「SELECT *,如果(類型= 1或類型= 2 'bigtype' 型)由group_by_clause group_by_clause組。 我沒有嘗試

0

你可以這樣做:

select count(*), if(type in (1, 2), 12, type) t from table group by t 
相關問題