[英]How use SQL CASE & COUNT in JOIN Table
在此处输入图像描述我想使用连接查询将学生的许可状态汇总为单个结果。 tbl_student和tbl_trns_clr示例如果所有办公室状态都已清除,则备注清除,否则如果一个办公室未清除,则备注不清除
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
我想让它看起来像桌面用户界面
您似乎只想在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;
笔记:
A
和B
这样A
随机字母只会使查询难以理解。 COUNT(*)
。 NOT EXISTS
更合适,性能更好 - 因为它可以停在匹配的第一个值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.