我运行下面的查询:替代使用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值从哪里来*?他们当然不是手动输入的固定列表?结果数据*去*在哪里?有人直接消费这些结果太多了。感觉就像你可能已经将多个程序步骤中的单个逻辑查询分解了一样,这是中间步骤之一。如果我们能够理解整个端到端的需求,我们可能会提供更好的整体解决方案。 –