我有一个包含这些表的数据库:
languages: id, name
countries: id, name
country_languages: id, country_id, language_id
我需要一个查询,它给我一个包含以下字段的表:
language_id
language_name
active
所有语言都应该出现在结果中。但是,如果该语言在国家/地区使用,id=39则该active列应为真,否则应为假。是否有任何直截了当的查询mysql?
谢谢
我有一个包含这些表的数据库:
languages: id, name
countries: id, name
country_languages: id, country_id, language_id
我需要一个查询,它给我一个包含以下字段的表:
language_id
language_name
active
所有语言都应该出现在结果中。但是,如果该语言在国家/地区使用,id=39则该active列应为真,否则应为假。是否有任何直截了当的查询mysql?
谢谢
使用匹配langauges映射表left outer join,然后检查映射表的id列以查看是否有匹配 ( active = 1) 或没有 ( active = 0)。
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