用于生成CASE列的SQL查询

时间:2013-06-19 12:21:24

标签: mysql

我有这些表的数据库:

languages: id, name
countries: id, name
country_languages: id, country_id, language_id

我需要一个查询,它为我提供了一个包含以下字段的表:

language_id
language_name
active

所有语言都应该出现在结果中。但是,如果在国家id=39中使用此语言,则active列应为true,否则应为false。 有没有直接在mysql进行此类查询?

感谢

1 个答案:

答案 0 :(得分:1)

使用langaugesleft 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