簡體   English   中英

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

[英]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;

筆記:

  • 使用有意義的表別名。 AB這樣A隨機字母只會使查詢難以理解。
  • 您不需要使用COUNT(*) NOT EXISTS更合適,性能更好 - 因為它可以停在匹配的第一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM