首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将id交叉引用到sql中的另一列?

如何将id交叉引用到sql中的另一列?
EN

Stack Overflow用户
提问于 2018-08-03 04:43:00
回答 2查看 1.2K关注 0票数 1

根据上面显示的表,我需要做的是,如果某个特定ID的COUNTRY字段为空,则选择相应的UNDERLYING_ID,并将其交叉引用到ID列,然后从UNDERLYING_ID与ID匹配的行中选择COUNTRY值。

因此,在本例中,A701的country值将为JAP,因为underlying_ID A706的ID列(最后一条记录)中有一个匹配项

不确定如何在此处编写查询。请给我建议。

EN

回答 2

Stack Overflow用户

发布于 2018-08-03 04:50:41

代码语言:javascript
复制
select t1.ID, coalesce(t1.country, t2.country) as country
from myTable t1
left join myTable t2 on t1.Id = t2.underlying_id
票数 1
EN

Stack Overflow用户

发布于 2018-08-03 22:52:21

根据您所说的不需要对"NULL“国家值进行多级查找,我认为CASE语句中的子select非常适合这种数据模式,并且已经在类似的情况下使用过它。

类似于:

代码语言:javascript
复制
SELECT
    CASE WHEN COUNTRY IS NOT NULL THEN COUNTRY
       ELSE ( SELECT T2.COUNTRY FROM [TABLE NAME] T2 WHERE T2.ID = T.UNDERLYING_ID )
       END AS Country
FROM [TABLE NAME] T

引擎很可能会将其转换为左连接,因此它的性能与@Cetin的答案相同,但在我看来,这是一个更具可读性的解决方案。

如果您想要将空值替换为特定值,您可以使用COALESCE,如下所示:

代码语言:javascript
复制
SELECT
    COALESCE(
        CASE WHEN COUNTRY IS NOT NULL THEN COUNTRY
        ELSE ( SELECT T2.COUNTRY FROM [TABLE NAME] T2 WHERE T2.ID = T.UNDERLYING_ID )
        END, 
        '(ReplacementValue)') AS Country
FROM [TABLE NAME] T
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51661879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档