我正在运行以下查询:
SELECT
ReceiptVoucherId,
VoucherId,
ReceiptId,
rvtransactionAmount,
AmountUsed,
TransactionTypeId
FROM
[Scratch].[dbo].[LoyaltyVoucherTransactionDetails]
WHERE
VoucherId IN
(2000723,
2000738,
2000774,
2000873,
2000888,
2000924,
2001023,
2001038,
2001074,
2001173)
目的是为我拥有的voucherId列表提取ReceiptVoucherId / VoucherId / ReceiptId / rvtransactionAmount / AmountUsed / TransactionTypeId数据。
我的问题是我的VoucherID列表长187k,所以IN子句是不可能的,因为它返回错误:
内部错误:已达到表达式服务限制
任何人都可以建议采取其他替代方法吗?
我正在使用SSMS 2014
最佳答案
只需创建一个包含所有这些凭单的表(希望您已经有一张),然后使用IN()
从表中选择:
SELECT
ReceiptVoucherId,
VoucherId,
ReceiptId,
rvtransactionAmount,
AmountUsed,
TransactionTypeId
FROM
[Scratch].[dbo].[LoyaltyVoucherTransactionDetails]
WHERE
VoucherId IN (SELECT VoucherId FROM VourchersTable)
关于sql - 使用IN子句的替代方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38187400/