如何简化SQL查询中的可重复模式?

时间:2011-08-11 14:11:26

标签: mysql sql

这是否可以简化:

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'

4 个答案:

答案 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而不是你做得更好。