繁体   English   中英

简单子查询无法正常工作DB2

[英]simple subquery not working DB2

嘿,这是一个非常简单的sql查询,没有给我正确的结果。

子查询:

SELECT NEODB2ADMIN.ORDERS.MEMBER_ID
FROM NEODB2ADMIN.ORDERS
WHERE NEODB2ADMIN.ORDERS.ORDERS_ID = 6371043

此子查询成功返回正确的值627809

简单查询:

SELECT *
FROM NEODB2ADMIN.ADDRESS
WHERE MEMBER_ID IN (627809)

此查询正确执行并返回4行。(一个成员有4个地址),但如果我尝试将这些查询合并为1个查询,如下所示:

SELECT *
FROM NEODB2ADMIN.ADDRESS
WHERE MEMBER_ID IN (
        SELECT NEODB2ADMIN.ORDERS.MEMBER_ID
        FROM NEODB2ADMIN.ORDERS
        WHERE NEODB2ADMIN.ORDERS.ORDERS_ID = 6371043
        )

然后查询返回0行。 为什么会这样呢?

谢谢

您的查询看起来还可以,我唯一能想到的是您可能误认为结果的值。

你可以尝试一下:

SELECT *
FROM NEODB2ADMIN.ADDRESS
WHERE MEMBER_ID IN (
        SELECT 627809
        FROM NEODB2ADMIN.ORDERS
        WHERE NEODB2ADMIN.ORDERS.ORDERS_ID = 6371043
        )

和这个

SELECT *
FROM NEODB2ADMIN.ADDRESS
WHERE MEMBER_ID IN (
        SELECT 627809
        FROM NEODB2ADMIN.ORDERS            
        )

由于您的订单(大概)只能携带一个Member_ID-您能否在不使用“ IN”的情况下尝试完整查询,而是尝试如下所示的均等联接:

    SELECT *
    FROM NEODB2ADMIN.ADDRESS
    WHERE MEMBER_ID = (
    SELECT NEODB2ADMIN.ORDERS.MEMBER_ID
    FROM NEODB2ADMIN.ORDERS
    WHERE NEODB2ADMIN.ORDERS.ORDERS_ID = 6371043
    )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM