gpt4 book ai didi

mysql - 带左连接的 SQL 计数

转载 作者:行者123 更新时间:2023-12-04 13:07:12 25 4
gpt4 key购买 nike

我想使用左连接从 2 个表中获取数据,这是我的表
第一个表(文件夹)


数字
日期


123/123
2021-08-14

321/321
2021-08-15

456/456
2021-08-15

098/098
2021-08-16

654/654
2021-08-17


第二个表(证书)


代码
文件夹编号


asd1
123/123

asd2
123/123

asd3
123/123

asd4
123/123

asd5
123/123

qwe1
321/321

qwe2
321/321

qwe3
321/321

zxc1
456/456

zxc2
456/456

zxc3
456/456

rty1
098/098

fgh1
654/654


我只使用 date 表中的 folder 列,我想通过 date 表中的 folder 和左连接 certificate 表计算所有数据,该表还计算所有与 code 表中的 number 列连接/相关的 folder,这是我的代码

SELECT b.date, COUNT(c.code) as code, COUNT(b.date) as datecount
FROM folder b
INNER JOIN certificate c
ON c.folder_number = b.number
GROUP BY b.date
ORDER BY b.date
我对该代码的期望:


日期
代码
日期计数


2021-08-14
5
1

2021-08-15
6
2

2021-08-16
1
1

2021-08-17
1
1


但是,这是我在使用该代码时得到的:


日期
代码
日期计数


2021-08-14
5
5

2021-08-15
6
6

2021-08-16
1
1

2021-08-17
1
1


如何解决?我也尝试使用 inner join 但结果是一样的
谢谢,抱歉我的英语不好顺便说一句

最佳答案

而不是 COUNT(b.date)你应该计算 number 的不同数量:

SELECT b.date, 
COUNT(c.code) as code,
COUNT(DISTINCT b.number) as datecount
FROM folder b INNER JOIN certificate c
ON c.folder_number = b.number
GROUP BY b.date
ORDER BY b.date;
如果有 number s 在 folder可能在 certificate 中没有匹配项那么你应该使用 LEFT加入。
demo .

关于mysql - 带左连接的 SQL 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68812364/

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