[英]MYSQL GROUP BY/COUNT with condition
我希望根據條件擴展一個簡單的“ GROUP / COUNT BY”查詢,其條件是僅占用一定數量的行。
這是一個簡單的表格。 正常的“ GROUP BY”將計數並返回全部行數,但是我需要使用表旁邊顯示的語句來擴展查詢:
+-----+----------+----------+-------+ | id | deleted | status | ref | +-----+----------+----------+-------+ | 1 | 0 | paid | 10001 | | 2 | 0 | paid | 10001 | | 3 | 0 | paid | 10001 | WHERE status = paid ABD id IN (2,3) //COUNT = 2 | 4 | 0 | paid | 10002 | | 5 | 1 | cat | 10002 | | 6 | 1 | cat | 10002 | WHERE status = cat AND id IN (6) //COUNT = 1 | 7 | 0 | cat | 10003 | | 12 | 0 | pending | 10004 | | 13 | 1 | pending | 10005 | | 14 | 1 | pending | 10005 | | 15 | 1 | pending | 10005 | WHERE status = pending AND id IN(12,14,17) COUNT = 3 | 16 | 0 | pending | 10005 | | 17 | 0 | pending | 10006 | | 18 | 0 | pending | 10006 | | 19 | 0 | pending | 10006 | +-----+----------+----------+-------+
在上述條件下,獲得所需結果的最簡單方法是什么?
+----------+---------+ | status | COUNT | +----------+---------+ | paid | 2 | | cat | 1 | | pending | 3 | +----------+---------+
我想知道為什么如果事先知道所有需要的行就進行查詢。 無論如何, where id IN (2,3,6,12,14,17)
的單個where條件應該可以完成這項工作。 所以最后的查詢是
select status, count(*)
from mySimpleTable
where id IN (2,3,6,12,14,17)
group by status
嘗試這個 :::
select status, count(*) as 'count'
from myTable
where (id IN (2,3) AND status= 'paid') OR
(status = 'cat' AND id IN (6)) OR
(status = 'pending' AND id IN(12,14,17))
group by status
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.