簡體   English   中英

MYSQL GROUP BY / COUNT有條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM