採取以下語句:多重條件在SELECT
SELECT SUM(IF(talktime > 4 AND status = 'answer' , 1, 0)) as count FROM table
輸出應該指望能夠滿足這兩項條件的行。
該陳述是否有效?
編輯:
我很感興趣,在IF多個條件的一部分。
採取以下語句:多重條件在SELECT
SELECT SUM(IF(talktime > 4 AND status = 'answer' , 1, 0)) as count FROM table
輸出應該指望能夠滿足這兩項條件的行。
該陳述是否有效?
編輯:
我很感興趣,在IF多個條件的一部分。
本聲明:
SELECT SUM(IF(talktime > 4 AND status = 'answer' , 1, 0)) as count
FROM table
是一種正確的,帶警告:
table
不允許作爲表名,因爲它是一個保留字。它需要被轉義。count
是列名一個糟糕的選擇,因爲它是一個內置的函數名您還可以簡化查詢,因爲不需要在MySQL中if()
:
SELECT SUM(talktime > 4 AND status = 'answer') as cnt
FROM `table`;
當然,您可以將比較邏輯移動到WHERE
子句,但這與原始查詢保持相同的結構。
IF(表達式1,表達式2,表達式3)
如果表達式1爲真,那麼IF()返回表達式2;否則它返回expr3
因此,當條件滿足時,上述代碼將返回1
,否則返回0
。 所以計數將是No. of rows satisfying the condition
。
例如,
如果要顯示total no .of calls
,total no of short calls
,total no of long calls
(假設talktime
長度呼叫持續時間的)。
SELECT SUM(IF(talktime > 4 , 1, 0)) as No_of_Long_Calls,
SUM(IF(talktime < 4 , 1, 0)) as No_of_Short_Calls,
COUNT(*) AS Total_Calls
FROM table_name
WHERE status = 'answer'
贊成票這是一個有效的SELECT語句中, 100%它會奏效。
希望這會有所幫助。
爲什麼不
SELECT COUNT(*) FROM table WHERE talktime > 4 AND status = 'answer'
?
你可以這樣做,使用此:
SELECT COUNT(id) count FROM table WHERE talktime > 4 AND status = 'answer';
我真的不明白你爲什麼會以其他任何方式做到這一點,但是,是的,你的代碼應該工作正常。
是的,它是有效的。你可以執行它並自己看! –
這個評論和回答非常具有諷刺意味。查詢將*不*按照書面形式運行。 –
@GordonLinoff:名字'count'和'table'只是爲了這個例子:)但我會離開他們,因爲你提出了很好的觀點。我對@alex的多重條件部分 – alex