我有一個表「用戶」,其中每個用戶具有包含值「1」或「2」或「3」的列「狀態」;mysql通過單個查詢計算多個類型
現在有了一個mysqli的查詢,我只是想有多少用戶使用狀態= 1,有多少用戶使用狀態= 2,以及有多少用戶使用狀態= 3
注數:查詢必須是隻計數,除了每個狀態的編號外,不必選擇或輸出數據。
我在這裏發現其他問題涵蓋幾乎相同的主題,但他們不完全相同。
謝謝。
我有一個表「用戶」,其中每個用戶具有包含值「1」或「2」或「3」的列「狀態」;mysql通過單個查詢計算多個類型
現在有了一個mysqli的查詢,我只是想有多少用戶使用狀態= 1,有多少用戶使用狀態= 2,以及有多少用戶使用狀態= 3
注數:查詢必須是隻計數,除了每個狀態的編號外,不必選擇或輸出數據。
我在這裏發現其他問題涵蓋幾乎相同的主題,但他們不完全相同。
謝謝。
如何:
SELECT
count(case when status = 1 then 1 else null end) AS STATUS_1,
count(case when status = 2 then 1 else null end) AS STATUS_2,
count(case when status = 3 then 1 else null end) AS STATUS_3
FROM users;
次數纔會計數非空條目和案例時,將在其他數據庫正常工作。
謝謝你,但我應該使用$ row = $ result-> fetch_assoc();或者它不起作用? – medk
使用這樣的事情:
SELECT
SUM(IF(value=1,1,0)) as one,
SUM(IF(value=2,1,0)) as two,
SUM(IF(value=3,1,0)) as trhee
FROM users
的IF
只給出了一個「1」回來時,你的價值觀是你希望它是什麼。
這可以通過選擇性計數來實現:只使用內部count
,只有通過了所需的行的非空值的CASE
表達式:
SELECT count(CASE WHEN status = 1 THEN 1 END) status_1
, count(CASE WHEN status = 2 THEN 1 END) status_2
, count(CASE WHEN status = 3 THEN 1 END) status_3
FROM users
這是一樣的更好,但不是nativley使用FILTER
支持的語法:
SELECT count(*) FILER(WHERE status = 1) status_1
, count(*) FILER(WHERE status = 2) status_2
, count(*) FILER(WHERE status = 3) status_3
FROM users
瞭解更多關於這在我的網站現代化SQL:http://modern-sql.com/feature/filter
' SELECT狀態,計數(*)FROM用戶GROUP BY狀態' –
在評論部分中經常可以找到最佳答案? :-) –