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

时间:2019-06-28 11:38:34

标签: mysql sql

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

enter image description here

#!/bin/bash
VOLUME_NAME=RamDisk
SIZE_IN_MB=1024
DEVICE=`hdiutil attach -nobrowse -nomount ram://$(($SIZE_IN_MB*2048))`
sudo diskutil erasevolume HFS+ $VOLUME_NAME $DEVICE

我想让它看起来像表格用户界面

1 个答案:

答案 0 :(得分:2)

您似乎只想在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更合适且性能更好-因为它可以停在匹配的第一个值。