在乡村语言中,
countrycode | language
US | English
BR | Portuguese
UK | English
,
countrycode | name
CN | China
BR | Brazil
JP | Japan
“内连接通过选择连接表中匹配行的组合来生成结果。但是,它找不到不匹配”
“左连接将左表(指定的第一个表)视为引用表,并为从中选择的每一行生成输出,无论该行是否与右表中的行匹配”
得到我们,英国,cn和jp,但不是br:
你使用两个外连接吗?
答案 0 :(得分:0)
你所追求的被称为Full Outer JOIN,MySQL没有明确的语法。使用:
SELECT cl.countrycode,
cl.language
FROM COUNTRYLANGUAGE cl
WHERE NOT EXISTS(SELECT NULL
FROM COUNTRYNAME cn
WHERE cn.countrycode = cl.countrycode)
UNION ALL
SELECT cn.countrycode,
cn.name
FROM COUNTRYNAME cn
WHERE NOT EXISTS(SELECT NULL
FROM COUNTRYLANGUAGE cl
WHERE cl.countrycode = cn.countrycode)
这是a good reference link, with visual examples of various JOINs。
答案 1 :(得分:0)
接近这个的另一种方法是:
select countrycode, max(language), max(name) from
(select countrycode, language, ' ' name from countrylanguage union all
select countrycode, ' ' language, name from countryname ) ilv
group by countrycode having count(*) = 1