gpt4 book ai didi

mysql - 如何在 JOIN 表中使用 SQL CASE 和 COUNT

转载 作者:可可西里 更新时间:2023-11-01 08:23:26 25 4
gpt4 key购买 nike

enter image description here我想使用连接查询将学生的许可状态汇总为一个结果。 tbl_student 和 tbl_trns_clr例如,如果所有办公室状态都已清除,则备注已清除否则,如果一个办公室未清除,则备注未清除

enter image description here

SELECT *
FROM `tbl_student` as A join
`tbl_trns_clr` as B
on B.EDP = A.EDP AND
CASE WHEN (SELECT COUNT(*)
FROM tbl_trns_clr
WHERE B.clr_status = 'Not Cleared' AND A.EDP = B.EDP
) = 0 THEN 'Cleared'
END) as clr_status

我想让它看起来像 Table UI

最佳答案

您似乎只需要 SELECT 中的标量表达式,而不是显式的 JOIN:

SELECT s.*,
(CASE WHEN EXISTS (SELECT 1
FROM tbl_trns_clr c
WHERE c.clr_status = 'Not Cleared' AND
c.EDP = s.EDP
)
THEN 'Cleared' ELSE 'Not Cleared'
END) as clr_status
FROM `tbl_student` s;

注意事项:

  • 使用有意义的表别名。 AB 等随机字母只会让查询难以理解。
  • 您不需要使用 COUNT(*)NOT EXISTS 更合适并且性能更好——因为它可以在第一个匹配的值处停止。

关于mysql - 如何在 JOIN 表中使用 SQL CASE 和 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56806258/

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