2015-11-20 92 views
1

嘿傢伙這是一個非常簡單的sql查詢,並沒有給我正確的結果。簡單的子查詢不起作用DB2

子查詢:

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行。爲什麼發生這種情況?

感謝

+0

你不能使用'join'嗎? –

+0

我可以使用連接,但我想知道爲什麼我的子查詢不工作 – ForeverStudent

+0

...好吧,無論如何加入工作? –

回答

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    
     ) 
+0

第二個查詢起作用,第一個不起作用 – ForeverStudent

+0

什麼數據類型是'ORDER'中的'MEMBER_ID'和'ADDRESS'中的什麼類型 –

+0

BIGINT在這兩個表中 – ForeverStudent

0

由於您的訂單(大概)只能攜帶一個Member_ID - 能不能請你完整的查詢無「IN 「,而是嘗試平等加入如下:

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

以及這不是一個聯接,它也是一個子查詢,但我已經嘗試過,它也不工作:( – ForeverStudent

+0

嘗試重寫每一邊爲文本,看看它是否運行。是否有可能的環境因素(模式,同義詞,贈款)你有沒有比你想象的查詢不同的桌子? –