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

问题描述 投票:0回答:2

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

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

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

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

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

sql inner-join
2个回答
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

0
投票

连接应始终与两个表中的相同列类型相同。如果国家代码存储在TableA的不同列中,Isnull将为您工作

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
© www.soinside.com 2019 - 2024. All rights reserved.