如果值在語句字符串上市,而不是存儲在表中,被用於目前正在由值列表,然後也許是修訂的語法[顯然,來自IN謂詞的其他輸入可能會受到影響?以下修改的值列表語法既可以用於原始聚合查詢[下面顯示的兩個查詢中的第一個],也可以用於查詢如何操作代碼的查詢[第二個下面兩個查詢]:
Select count(*)
from TABLE_A
where Col1 in (values('one'),('two'),('three'),('four'))
; -- report from above query follows:
COUNT (*)
2
[BGN-編輯05 - 8 - 2016:將這個文本和例子僅低於]
顯然至少一個DB2變體不太願意在派生表未命名列,所以查詢就在列的下方;我選擇了COL1,以便與實際TABLE中的名稱相匹配,但這不應該是必需的。將(col1)
添加到原始查詢中,該查詢仍保留在原始的預編輯版本中;該版本仍然是這個編輯\插入後缺少(col1)
這裏補充:
select *
from (values('one'),('two'),('three'),('four')) as x (col1)
except (select * from table_a)
; -- report from above query follows:
COL1
three
four
以下是給原來的查詢,當一些不成文的DB2運行所註釋下方顯示一個未命名列發生故障變體;我應該指出,這個SQL查詢功能,沒有錯誤,在DB2 for我7.1
[最終編輯05 - 8-2016]
select *
from (values('one'),('two'),('three'),('four')) as x
except (select * from table_a)
; -- report from above query follows:
VALUES
three
four
如果1000個值'IN'條件,那麼,你可以添加一個表中並存儲所有1000條記錄。然後使用'LEFT JOIN'和'NULL'檢查你可以很容易找到不匹配的記錄 – Arulkumar
@Arulkumar。我已經知道這種方法了。我需要解決任何其他方法。 –
可能是VALUES()的規範的語法替代方法足夠作爲_any other_方法嗎?當這個謂詞是[或有效的;我無法測試非選擇子查詢語法] Col1 in(values('one'),('two'),('three'),('four'))',那麼相同的語法可以用在EXCEPT查詢[或EXCEPTION JOIN對已經提出的LEFT JOIN的類似影響]。 – CRPence