2013-10-16 59 views
0

我需要獲取特定id的列計數,但僅當列值爲「是」時。以下是我猜錯了。中期(PRIMARY KEY)在MySQL中獲取具有特定值的列的計數

SELECT COUNT(mt.currentstate = 'Yes') AS currentstate FROM mytable mt WHERE mid = 100 GROUP BY mid; 

對於COUNT值只有我從列mt.currentstate =需要「是」,但對於結果集,我需要得到所有的值,其中mt.currentstate =「是」或'否'

+1

我覺得'mt.currentstate ='Yes''應該在where子句中。 – Gowri

+0

現在,如果我把WHT子句中的mt.currentstate ='Yes',它會過濾掉所有mt.currentstate ='Yes'的行,但是我需要mt.currentstate ='No'行中的其他列值。我會去做? –

+0

@Axel回答了您要找的內容 – Gowri

回答

3

你可以嘗試下面的查詢,它會工作,如果我不worng。

SELECT COUNT(mt.mid) AS counter FROM mytable mt WHERE mid = 100 AND mt.currentstate = "YES" GROUP BY mid; 

謝謝!

+1

我想你必須刪除'GROUP BY'部分,因爲結果不包含'mid'。 – Axel

+0

是的,可能是。但實際的問題是如何獲得**總數**使用這種情況。但是,你也是對的。 +1 – Chandresh

+0

現在,如果我把WHT子句中的mt.currentstate ='Yes',它會過濾掉所有mt.currentstate ='Yes'的行,但是我需要mt.currentstate ='No'行中的其他列值。我會怎麼做? –

0
SELECT COUNT(mt.mid) AS currentstate FROM mytable mt 
WHERE mid = 100 and mt.currentstate = 'Yes' GROUP BY mid; 
+0

現在,如果我把WHT子句中的mt.currentstate ='Yes',它會過濾掉所有mt.currentstate ='Yes'的行,但是我需要mt.currentstate ='No'行中的其他列值。我會去做? –

1

試試這個:

SELECT COUNT(*) AS currentstate FROM mytable WHERE mid = 100 AND currentstate='Yes'; 

編輯:「現在如果我把mt.currentstate = '是' 裏面的WHERE子句,它會過濾所有的行,其中mt.currentstate = '是',但我需要mt.currentstate ='No'行中的其他列值..我該怎麼辦?「

SELECT currentstate, COUNT(*) AS c FROM mytable WHERE mid = 100 GROUP BY currentstate; 
+0

現在,如果我把mt.currentstate ='是'放在WHERE子句中,它會過濾掉所有mt.currentstate ='Yes'的行,但是我需要mt.currentstate ='No'行的其他列值。我會去做? –

+0

順便說一句:你應該提供關於表格定義的更多信息,比如一個獨特的'mid'是否可以有多行?什麼是表鍵? – Axel

+0

mid(PRIMARY KEY) –

相關問題