【问题标题】:Passing a set of value to a WHERE clause without using IN Operator在不使用 IN 运算符的情况下将一组值传递给 WHERE 子句
【发布时间】:2018-12-04 05:18:45
【问题描述】:

我有这个查询

SELECT 
    ID, isDebit, AccountID, SUM(Amount) AS Amount
FROM
    journaltransactions
WHERE
    AccountID IN (45,23,78,90,37,48)

任何人都有想法解决相同的问题不使用 IN 运算符

是否可以在Procedure或其他东西中遍历这组值

如果没有 IN 运算符

,我不知道如何解决这个问题

任何帮助将不胜感激

【问题讨论】:

  • 你为什么要避开IN?你想让它更快吗? accountID 列表来自哪里?您可以在应用程序代码中迭代结果集,不需要过程。您的意思是在查询中包含GROUP BY AccountID

标签: mysql loops


【解决方案1】:

虽然我不是特别明白不使用in操作符的要求,但是可以通过一系列or来实现:

SELECT 
    ID, isDebit, AccountID, SUM(Amount) AS Amount
FROM
    journaltransactions
WHERE
    AccountID = 45 OR
    AccountID = 23 OR
    AccountID = 78 OR
    AccountID = 90 OR
    AccountID = 37 OR
    AccountID = 48

请注意,此查询可能比使用 in 的查询慢。

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 2012-01-13
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多