使用MySQL中的变量在Where子句中选择Statement

时间:2010-08-25 15:57:47

标签: sql mysql aggregate-functions

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

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

“table”非常大,我希望尽可能快地缩小查询必须查看的记录范围。

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

2 个答案:

答案 0 :(得分:1)

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

我认为:

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

有关更好的示例,请参阅MySQL manual

答案 1 :(得分:0)

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

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

HAVING效率较低,将其视为结果集后处理器,而不是查询优化器可以执行的任何操作。