首页 > 解决方案 > SQL - 如何在子选择查询中使用父选择的 id

问题描述

我需要使用使用第二个选择的 CASE 语句进行查询,并且在第二个选择中,我需要在 where 子句中使用父选择的 id。

它看起来像这样:

    SELECT "OFF_ID" AS "ID_P",
    CASE 
       WHEN 
         ( SELECT "OFF_NUMBER" FROM "OFFER_COPY" 
          WHERE "OFF_C_ID" = "ID_P" <-- I need to map to the parent ID
         ) > 0
       THEN 'JOHN'
       ELSE  'DOE'
        END AS "TEST",
    FROM "OFFER"

标签: sqlpostgresql

解决方案


您应该始终限定列名,特别是在相关子查询中:

SELECT o."OFF_ID" AS "ID_P",
       (CASE WHEN (SELECT oc."OFF_NUMBER"
                   FROM "OFFER_COPY" oc
                   WHERE oc."OFF_C_ID" = o."OFF_ID" 
                  ) > 0
             THEN 'JOHN' ELSE  'DOE'
        END) AS "TEST",
FROM "OFFER" o

推荐阅读