DB2 SQL:如何将“WHERE EXISTS”表中的列添加到选择语句

Posted

技术标签:

【中文标题】DB2 SQL:如何将“WHERE EXISTS”表中的列添加到选择语句【英文标题】:DB2 SQL: How do I add columns from the 'WHERE EXISTS' table to the select statement 【发布时间】:2021-01-24 01:35:13 【问题描述】:

假设我有这个问题:

select A.ID_NUM,A.EFF_DT,B.STRT_DT,B.END_DT
FROM MEMBERSHIP A
WHERE EXISTS
(SELECT 1 FROM PLAN B
WHERE A.ID = B.ID)

如何将 PLAN 表 (B.STRT_DT,B.END_DT) 中的列添加到 select 语句中? 我收到错误:B.STRT_DT 在使用它的上下文中无效 SQLCODE = 206

【问题讨论】:

【参考方案1】:

你使用JOIN:

SELECT M.ID_NUM, M.EFF_DT, P.STRT_DT, P.END_DT
FROM MEMBERSHIP M JOIN
     PLAN P
     ON M.ID = P.ID;

【讨论】:

【参考方案2】:

连接是最简单的方法,但如果您的 PLAN 表在其 ID 列上不是唯一的,则您需要在连接之前(或之后)添加 DISTINCT。

SELECT A.ID_NUM,A.EFF_DT,B.STRT_DT,B.END_DT
FROM MEMBERSHIP A
JOIN (SELECT DISTINCT ID FROM PLAN) B 
ON ( A.ID = B.ID )

【讨论】:

以上是关于DB2 SQL:如何将“WHERE EXISTS”表中的列添加到选择语句的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 子查询中使用 WHERE EXISTS?

SQL WHERE EXISTS 掩盖了子查询中的错误

使用 SQL Where Exists() 过滤结果

Impala SQL:合并具有重叠日期的行。不支持 WHERE EXISTS 和递归 CTE

关于sql中where exists的问题

如何使用 sql server exists 子句进行优化?