我有这些表的数据库:
languages: id, name
countries: id, name
country_languages: id, country_id, language_id
我需要一个查询,它为我提供了一个包含以下字段的表:
language_id
language_name
active
所有语言都应该出现在结果中。但是,如果在国家id=39
中使用此语言,则active
列应为true,否则应为false。
有没有直接在mysql
进行此类查询?
感谢
答案 0 :(得分:1)
使用langauges
将left outer join
与映射表匹配,然后检查映射表的id
列以查看是否匹配(active = 1
)(active = 0
){ {1}})。
select distinct
l.id
, l.name
, case when cl.id is null then 0 else 1 end as active
from languages l left outer join country_languages cl
on l.id = cl.language_id
where cl.id = 39