gpt4 book ai didi

mysql - 检索多个计数的 SQL 语句

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:02 25 4
gpt4 key购买 nike

table account:
acID (pri, uni, a-i)
...

table patient:
paID (pri, uni, a-i)
paAccountID (int, foreign key)
...

table test:
tsID (pri, uni, a-i)
tsAccountID (int, foreign key)
tsPatientID (int, foreign key)
tsStatus (int, ranges 0 to 3)
tsFlag (int, ranges 0 to 1)

patient 中检索数据和每个患者的 tsID 数量:

SELECT patient.*, Count(tsID) as tsCount   
FROM account
LEFT JOIN patient ON acID = paAccountID
LEFT JOIN test ON paID = tsPatientID
WHERE paAccountID=1
GROUP BY paID

现在,我想检索 tsFlag=1 的数量、tsStatus=0 的数量、'tsStatus=1' 的数量 ... 的数量>tsStatus=3.

感谢爆丸的回答:

SELECT patient.*, Count(tsID), SUM(tsStatus=0), 
SUM(tsStatus=1), SUM(tsStatus=2), SUM(tsStatus=3), SUM(tsFlag=1)
FROM account
LEFT JOIN patient ON acID = paAccountID
LEFT JOIN test ON paID = tsPatientID
WHERE paAccountID=1
GROUP BY paID

工作起来很有魅力,但如果 Count=0,则 SUMNULL- 我怎样才能得到 0 呢?

最佳答案

您可以使用 SUM 获得 X = Y 的计数:

SELECT patient.*, SUM(tsStatus = 1) AS tsStatus1
FROM ...

您也可以对其他列执行此操作。

您可以使用 IFNULLCOALESCE 指定默认的非空值:

IFNULL(SUM(tsStatus = 3), 0);

关于mysql - 检索多个计数的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14947433/

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