我正在运行以下查询:

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/

10-08 23:48