gpt4 book ai didi

带有 COUNT 的 MySQL 查询和来自另一个表的连接列

转载 作者:行者123 更新时间:2023-11-29 06:45:09 25 4
gpt4 key购买 nike

我有 2 个包含多个字段的表。

表 1:

+--------+---+---------------+                                                  
| month | id| VERDICT_id |
+--------+------+------------+
| 201307 | 1 | 1 |
| 201307 | 2 | 4 |
| 201307 | 3 | 2 |
| 201307 | 4 | 2 |
| 201307 | 5 | NULL |
| 201307 | 6 | 1 |
+--------+------+------------+

像这样,对于每个新的“月份”,对于每个唯一的“id”,根据表 2 中的值设置“VERDICT_ID”。

表 2:

+----+----------------------------------+
| id | title |
+----+----------------------------------+
| 1 | Passed |
| 2 | Failed (Component Fault) |
| 3 | Failed (User Fault) |
| 4 | Failed (Hardware Issue) |
+----+----------------------------------+

我做了一个查询,给出了下面的输出

实际输出:

+--------+------------+----------+
| month | VERDICT_id | COUNT(*) |
+--------+------------+----------+
| 201307 | 1 | 2 |
| 201307 | 2 | 2 |
| 201307 | 4 | 1 |
+--------+------------+----------+

我想要的是,

+--------+------------+----------+
| month | VERDICT_id | COUNT(*) |
+--------+------------+----------+
| 201307 | 1 | 2 |
| 201307 | 2 | 2 |
| 201307 | 3 | 0 |
| 201307 | 4 | 1 |
+--------+------------+----------+

这两个输出之间的区别是,如果任何 VERDICT_id 一个月不存在,那么我想将 VERDICT_id 和 COUNT 打印为“0”。

但是对于下面的查询这是不可能的。

select month,VERDICT_id, COUNT(*) FROM Table1 
where (month = 201307) AND (VERDICT_id BETWEEN 1 AND 4) GROUP BY month, VERDICT_id;

问。是否可以进行查询以将不存在的 VERDICT_id 和 COUNT 打印为“0”?

最佳答案

试试这个

SELECT v.*, count(t.verdict_id) as cnt FROM 
(
SELECT month, id as verdict_id
from
(SELECT DISTINCT month FROM Table1 where (month = 201307)) M ,
verdictTable
) v
LEFT OUTER JOIN Table1 t ON v.verdict_id = t.verdict_id and v.month = t.month
GROUP BY v.verdict_id, v.month

关于带有 COUNT 的 MySQL 查询和来自另一个表的连接列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com