我運行下面的查詢:替代使用IN子句
SELECT
ReceiptVoucherId,
VoucherId,
ReceiptId,
rvtransactionAmount,
AmountUsed,
TransactionTypeId
FROM
[Scratch].[dbo].[LoyaltyVoucherTransactionDetails]
WHERE
VoucherId IN
(2000723,
2000738,
2000774,
2000873,
2000888,
2000924,
2001023,
2001038,
2001074,
2001173)
其目的是提取ReceiptVoucherId/VoucherId/ReceiptId/rvtransactionAmount/AmountUsed/TransactionTypeId數據voucherId的,我有名單。
我在這裏的問題是,我VoucherID的名單是187K長,所以IN子句是不可能的,因爲它會返回錯誤:
內部錯誤:表達式服務限制已經達到
燦任何人都建議在這樣做的替代方案?
我使用SSMS 2014
嘗試使用臨時表代替存儲值 –
如果這些憑證ID存在於其他位置,則也可以使用子查詢,而不是實際值。但是,像@GiorgosBetsos那樣存儲在表格中的建議將是一種更簡潔的方法。 – Mfusiki
這些187K值從哪裏來*?他們當然不是手動輸入的固定列表?結果數據*去*在哪裏?有人直接消費這些結果太多了。感覺就像你可能已經將多個程序步驟中的單個邏輯查詢分解了一樣,這是中間步驟之一。如果我們能夠理解整個端到端的需求,我們可能會提供更好的整體解決方案。 –