2015-04-04 63 views
0

我有一個情況,其中有一個表包含一些值,其中我有三列,每行包含三個名稱,現在我的要求是,我必須計算該表中出現的名稱&重複的出現次數將被視爲1.並且我必須以逗號(,)分隔的格式顯示列中的出現次數,如果出現次數是兩次,則必須顯示如1,1 。這是我的表結構,還我張貼我想要什麼格式,如何統計表中字符串值排序的發生

這是表我有,

id name1 name2 name3 
1 A  A  B 
2 B  C  D 
3 A  A  A 

現在有什麼我的要求是,

id name1 name2 name3 count 
1 A  A  B 1,1 
2 B  C  D 1,1,1 
3 A  A  A 1 

如何實現這一點,有人請幫助

+0

如果數據是'A,B,A'會發生什麼? – Bohemian 2015-04-04 12:36:39

+0

@Bohemian然後它會是1,1 – lucifer 2015-04-04 12:39:14

回答

2

使用case

select id, name1, name2, name3, 
    case 
    when name1 = name2 and name2 = name3 then '1' 
    when name1 != name2 and name1 != name3 and name2 != name3 then '1,1,1' 
    else '1,1' end count 
from mytable 

注意怎樣的情況下測試時,所有相同,所有不同的第一意味着其他涵蓋所有其他組合可導致1,1


如果你只是想不同值的數量(作爲一個數值 - 按您的意見):

select id, name1, name2, name3, 
    case 
    when name1 = name2 and name2 = name3 then 1 
    when name1 != name2 and name1 != name3 and name2 != name3 then 3 
    else 2 end count 
from mytable 
+0

非常感謝,但我希望在我的申請數整數因爲我必須乘以一個金額的基礎上count.ie如果1,1然後我必須乘以20美元爲2 * 20美元這種方式,是有成就的? – lucifer 2015-04-04 13:04:16

+0

我不明白 - 「1,1」只能是文字。 Mysql沒有srray類型。你期望什麼數據類型? – Bohemian 2015-04-04 14:10:25

+0

我的目的是乘以逗號分隔值的數量,即如果1,1然後2 * $ 20,如果1然後1 * 20美元,如果1,1,1然後3 * 20美元那麼 – lucifer 2015-04-04 14:23:00

相關問題