让我们,英国在一个表,cn和jp在另一个,但不是在两个

时间:2010-07-13 19:19:13

标签: mysql

in countrylanguage,

countrycode | language  
US          | English  
BR          | Portuguese  
UK          | English  
中的

countrycode | name  
         CN | China  
         BR | Brazil  
         JP | Japan  

“内连接通过选择连接表中匹配行的组合来生成结果。但是,它找不到不匹配”

“左连接将左表(指定的第一个表)视为引用表,并为从中选择的每一行生成输出,无论该行是否与右表中的行匹配”

为了得到我们,英国,cn和jp:

  • 内部联接找不到不匹配(br<> br不起作用)。
  • 外部联接会在一个(我们和英国)中找到全部,或者在另一个中找到所有(cn和jp)。

你使用两个外连接吗?

1 个答案:

答案 0 :(得分:0)

像这样的东西。如果您希望它们位于不同的列中,请仅使用内部查询。

select
  coalesce(c1, c2) countrycode
from
  (
    select
      t1.countrycode c1,
      t2.countrycode c2
    from
      countrylanguage t1
      full outer join countryname t2 on t1.countrycode = t2.countrycode
    where
      t1.countrycode is null or t2.countrycode is null
  ) x

这篇wikipedia文章是开始学习联接的好地方,然后转到特定于RDBMS的文档。