【问题标题】:Using a variable in MySQL Select Statment in a Where Clause在 Where 子句中使用 MySQL Select 语句中的变量
【发布时间】:2010-08-25 15:57:47
【问题描述】:

我想知道是否可以在 select 语句中找到一个值并在 where 子句中使用它,例如:

SELECT col1, MAX(col2) - COUNT(DISTINCT col3) as variable
FROM table
WHERE col1 > variable

“table”非常大,我想尽快缩小查询必须查看的记录范围。

我知道这不是不可能写的代码(#1054 - 'where 子句'中的未知列'variable'),但无论如何要找出“variable”的值然后使用它在 WHERE 子句中吗?

【问题讨论】:

    标签: sql mysql aggregate-functions


    【解决方案1】:

    您可以尝试子查询语法,也称为嵌套选择。

    我认为是这样的:

    SELECT col1 WHERE col1 > (SELECT MAX(col2) - COUNT(DISTINCT col3)) 
    

    请参阅MySQL manual 以获得更好的示例。

    【讨论】:

      【解决方案2】:

      在某些情况下,您可以在 WHERE 子句中复制表达式,如 RedFilter 所示。在其他情况下,这是不可能的,您可以使用 HAVING 子句,例如

      SELECT col1, MAX(col2) - COUNT(DISTINCT col3) as variable
      FROM table
      HAVING col1 > variable
      

      HAVING 效率较低,请将其视为结果集后处理器,而不是查询优化器可以做任何事情的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2010-12-07
        • 1970-01-01
        • 2015-01-27
        • 2018-09-02
        相关资源
        最近更新 更多