我想知道是否可以在select语句中找到一个值并在where子句中使用它,如:
SELECT col1, MAX(col2) - COUNT(DISTINCT col3) as variable
FROM table
WHERE col1 > variable
“table”非常大,我希望尽可能快地缩小查询必须查看的记录范围。
我知道这不是代码写的不可能(#1054 - 'where子句'中的未知列'变量'),但无论如何要找出“变量”的值然后使用它在WHERE子句中?
答案 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效率较低,将其视为结果集后处理器,而不是查询优化器可以执行的任何操作。