[英]MySql Add Extra Column With Case Statement From Another Table To Select Query
我總共有 3 個表Class , Subject和ClassSubject其中Class有兩列id和class_name , Subject有兩列id和subject_name , ClassSubject有三列id , class_id和subject_id 。
假設我有兩個 class - Class表中有一個和兩個,並且我有三個主題Language , History和Math在Subject表中。
現在對於Class表中的每個 class 我想要一個主題表中所有可用主題的列表,其中包含一個名為is_subject的額外列,這將是 0 或 1,具體取決於ClassSubject表中是否存在與特定 ZA2F2ED4F8EBC2CBB4C21A2 匹配的行主題標識。
Class表
主題表
對於任何 class id 輸入,結果表應該是這樣的,這取決於ClassSubject表中是否存在一行。
請注意,在結果表中, id是主題 id,不是Class id 也不是ClassSubject id
您需要cross join
和left 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.