2014-02-24 135 views
0

在使用硬編碼值和子查詢我有這個疑問:IN子句

SELECT * 
FROM Parent.Table 
WHERE Ref_Num IN ('4205' or (SELECT Ref_Num FROM Child.Table WHERE Ref_Num ='234')) 
AND Asset_Type IN ('PUMPS','COLL') 

該查詢不起作用。該子查詢返回53行,而不是輸出所有的子女參考號碼是否有一種方法可以將它們與父號碼'4205'一起放入查詢中。

謝謝。

+0

嘗試像'SELECT 4205 UNION ALL/*您的查詢* /'一樣的'UNION'。 – user2989408

回答

1

或許你可以嘗試像

SELECT * 
    FROM Parent.Table 
    WHERE Ref_Num In (SELECT Ref_Num 
         FROM Child.Table 
         WHERE Ref_Num ='234' 
        UNION 
         SELECT '4205' As Ref_Num 
         FROM SYSIBM.SYSDUMMY1) 
    AND Asset_Type IN ('PUMPS','COLL') 

注意SYSDUMMY1是EBCDIC表。如果您需要ASCII,請使用SYSDUMMYA。如果您需要Unicode,請使用SYSDUMMYU。

分享和享受。

+0

鑑於他沒有使用僞表中包含的值,這個字段的編碼是什麼關係?或者,如果引用表,優化器是否會自動轉換? –

0

是,使用一個聯合查詢

select 4205 ref_num 
from some_small_table 
union 
select ref_num 
from child.table 
etc 
+0

這不起到過濾器的作用,只能用我想要的ref編號返回記錄。它只是添加到返回的行。 – Sewder