簡體   English   中英

MySql 從另一個表向 Select 查詢添加帶有案例語句的額外列

[英]MySql Add Extra Column With Case Statement From Another Table To Select Query

我總共有 3 個表ClassSubjectClassSubject其中Class有兩列idclass_nameSubject有兩列idsubject_nameClassSubject有三列idclass_idsubject_id

假設我有兩個 class - Class表中有一個兩個,並且我有三個主題LanguageHistoryMathSubject表中。

現在對於Class表中的每個 class 我想要一個主題表中所有可用主題的列表,其中包含一個名為is_subject的額外列,這將是 0 或 1,具體取決於ClassSubject表中是否存在與特定 ZA2F2ED4F8EBC2CBB4C21A2 匹配的行主題標識。

Class表

在此處輸入圖像描述

主題表

在此處輸入圖像描述

對於任何 class id 輸入,結果表應該是這樣的,這取決於ClassSubject表中是否存在一行。

請注意,在結果表中, id是主題 id,不是Class id 也不是ClassSubject id

在此處輸入圖像描述

您需要cross joinleft join ,如下所示:

select c.id, c.class_name, s.subject_name, 
       case when cs.class_id is null then 0 else 1 end as is_subject
 from class c cross join subjects s
 left join classSubject cs on c.id = cs.class_id and s.id = cs.subject_id

- 更新

select s.subject_id, s.subject_name, 
       case when cs.id is null then 0 else 1 end as is_subject
 from subjects s
 left join classSubject cs on s.id = cs.subject_id

暫無
暫無

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

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