这是否可以简化:
SELECT GREATEST(a,b)
FROM my_table
WHERE GREATEST(a,b) > 25
类似于:
SELECT GREATEST(a,b) AS max_a_b
FROM my_table
WHERE max_a_b > 25
此尝试返回:
Unknown column 'max_a_b' in 'where clause'
答案 0 :(得分:4)
SELECT GREATEST(a,b) AS max_a_b
FROM my_table
HAVING max_a_b > 25
如果你使用having子句,那么在别的位置,如果你的别名存在则不存在。
答案 1 :(得分:3)
SELECT max_a_b
FROM (SELECT GREATEST(a,b) AS max_a_b
FROM my_table)
WHERE max_a_b > 25
这应该可行,但如果这简化了查询则值得怀疑。
重复GREATEST(a,b)
子句中的WHERE
很好,imo。
答案 2 :(得分:1)
MySQL没有运行GREATEST(a,b)
两次,因为它值得。
答案 3 :(得分:-1)
声明仍然很简单。当你的问题是关于优化的时候,DBMS而不是你做得更好。