PostgreSQL嵌套查询无结果排查:跨表IN子句关联失效
问题解决:PostgreSQL嵌套IN查询无结果的修复
问题根源
你写的子查询里做了'('||"ID_CONTRACTOR_CONTACT"||')'的拼接操作,这会把每个ID值变成带括号的字符串(比如'(238120)'),但CONTACT-BUSINESS表的ID字段是纯数字格式的字符串(比如'238120'),两者完全不匹配,所以IN查询无法找到任何匹配结果。
正确的查询写法
直接在子查询中返回ID_CONTRACTOR_CONTACT的原始值即可,不需要额外拼接括号:
SELECT "NAME" FROM "CONTACT-BUSINESS" WHERE "ID" IN ( SELECT "ID_CONTRACTOR_CONTACT" FROM "INPUT" WHERE "FK_SOURCE" = '20231725175' AND "DOCKET" = '324771' AND "ACTIVEFLAG" != 'N' ) AND "ACTIVEFLAG" = 'Y';
严谨性补充(可选)
如果INPUT表的ID_CONTRACTOR_CONTACT是数字类型,而CONTACT-BUSINESS的ID是字符串类型,PostgreSQL会自动做类型转换,不过也可以显式转换确保类型一致:
SELECT "NAME" FROM "CONTACT-BUSINESS" WHERE "ID" IN ( SELECT CAST("ID_CONTRACTOR_CONTACT" AS VARCHAR) FROM "INPUT" WHERE "FK_SOURCE" = '20231725175' AND "DOCKET" = '324771' AND "ACTIVEFLAG" != 'N' ) AND "ACTIVEFLAG" = 'Y';
内容的提问来源于stack exchange,提问作者GoChris
相关产品推荐
相关产品推荐

