2016-08-09 27 views
1

我有表格式如何獲得半世紀,幾個世紀以來,雙數百數爲每個玩家在MySQL

id| name | types | 
_________________ 
1 sachin 100 
2 virat 50 
3 sachin 50 
4 sachin 50 
5 sachin 200 
6 virat 100 
7 virat 200 

我想爲現在的結果是一樣的東西

name | num of 50 |num of 100 |num of 200 
sachin | 2  | 1  | 1 
virat | 1  | 1  | 1 

什麼是正確的方式來到這裏? 我嘗試使用group by。但我沒有去那裏

任何幫助嗎?

感謝

+0

你可以使用樞軸,會給你準確的結果 – KRU

+0

參考這個 KRU

+0

@KRU謝謝。我將會致電 –

回答

2

如果你只是有這些類型,你可以試試這個:

select 
    name, 
    count(case when types = 50 then 1 else null end) as num_50, 
    count(case when types = 100 then 1 else null end) as num_100, 
    count(case when types = 200 then 1 else null end) as num_200 
from yourtable 
group by name 

Demo Here

+0

感謝您的演示。我不需要重新創建它:p – 1000111

+1

@ 1000111沒關係,upvote你的偉大答案! :-D – Blank

+0

是的。我只有3種類型 –

3

您也可以依靠MySQL布爾表達式。

SELECT 
    name, 
    SUM(types = 50) as num_50, 
    SUM(types = 100) as num_100, 
    SUM(types = 200) as num_200 
FROM yourtable 
GROUP BY name 

注:

由於MySQL的布爾表達式解析爲0/1,這樣你可以使用它裏面SUM()

SUM(a=b) returns 1 only if a is equal to b

Working demo

更多:

如果你使用COUNT爲@提到JPG的答案,然後記住的COUNT

一些微妙之處以下微妙之處就COUNT

SELECT COUNT(0); Result: 1 

SELECT COUNT(-1); Result: 1 

SELECT COUNT(NULL); Result: 0 

SELECT COUNT(71); Result: 1 

SQL FIDDLE

+0

@ 100111謝謝你的回答 –