选择ISO编码国家/地区的全名

时间:2018-03-02 13:44:40

标签: sql inner-join

假设我有两个表,其中一个名为A并包含两列:country1(作为ISO代码),country2(作为ISO代码),而另一个名为B并包含两列:code(国家的ISO代码)和名称(国家的全名)。

我想使用全名列出表A中出现的所有国家/地区,而不是ISO代码。

如果我必须得到表A第一栏中出现的每个国家的全名,我会写下以下内容:

SELECT name AS name1
FROM B
    INNER JOIN A ON B.code = A.country1

但是,我正在努力找出如何使用全名获取两个列。

2 个答案:

答案 0 :(得分:1)

您应该可以在A的codecountry1列中加入B的country2列。您只需要确保在每次加入时使用不同的别名。

SELECT A.country1, A.country2, B1.name AS name1, B2.name as name2
FROM A
JOIN B AS B1 ON B1.code = A.country1
JOIN B AS B2 ON B2.code = A.country2

答案 1 :(得分:0)

Join应始终位于两个表的相同列类型中。 Isnull将适合您,如果国家/地区代码存储在TableA的不同列中

SELECT name AS name1
FROM B
    INNER JOIN A ON B.code = isnull(A.country1, a.Country2)

或用例陈述

   SELECT name AS name1
    FROM B
        INNER JOIN A ON B.code = case when A.country1 is null then A.country2 
                                   else A.country1 end