假设我有两个表,其中一个名为A并包含两列:country1(作为ISO代码),country2(作为ISO代码),而另一个名为B并包含两列:代码(ISO代码国家)和名称(国家的全名)。
我想列出表A中出现的所有国家/地区,使用它们的全名而不是ISO代码。
如果我必须得到表A第一栏中出现的每个国家的全名,我会写下以下内容:
SELECT name AS name1
FROM B
INNER JOIN A ON B.code = A.country1
但是,我正在努力找到如何使用全名获取两个列。
您应该能够在A的code
和country1
列上加入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
连接应始终与两个表中的相同列类型相同。如果国家代码存储在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