SQL Count 多於一個 column

假設我有以下的table

name e1 e2 e3

Peter 1 2 2

David 3 1 2

Cindy 6 1 4

Kitty 2 1 2

我應該用甚麼指令去找出e1,e2,e3中共有多少個2嗎?

(output should be 5)

Update:

Danny Honda :

試了不可行

3 Answers

Rating
  • Lee
    Lv 7
    7 years ago
    Best Answer

    count只能對單一個field數。即數e1有幾個個2。

    指令係 select count(*) from table where e1=2,

    再加e2,即係select count(*) from table where e2=2,

    再加e3,即係select count(*) from table where e3=2,

    但似乎沒有指令可以相加。

    方法一係以程式碼把三個得出數字相加。

    Mm...

    要把相加在sql完成,也許可以先把三個field組成一個單一table,即

    select name,e1 as num from table

    union

    select name,e2 as num from table

    union

    select name,e3 as num from table

    ,然後用先前select count(*) from (select ....) where num=2

    不過sql未必接受呢個句式(你可以試一下)。

    要變化的話,可以將union那句化成一個view。那麼select count(*) from MyView where num=2一定得。

    如果你用的sql沒有view,你可以把第一句結果存到一個temp table。

    如果也不支援temp table就‧‧‧‧‧

    另一個注意係效率低,即係如果record多會好慢。

  • TP
    Lv 5
    7 years ago

    Try to use a combination of sum, if and +.

    http://dev.mysql.com/doc/refman/5.0/en/control-flo...

  • 7 years ago

    Try,

    select count(1) from (select * from table where e1 = 2 or e2 = 2 or e3 = 2)

    Source(s): myself
Still have questions? Get your answers by asking now.