這有可能簡化:如何簡化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'
這有可能簡化:如何簡化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'
SELECT GREATEST(a,b) AS max_a_b
FROM my_table
HAVING max_a_b > 25
如果您使用having子句,那麼在您的別名不存在的地方存在。
SELECT max_a_b
FROM (SELECT GREATEST(a,b) AS max_a_b
FROM my_table)
WHERE max_a_b > 25
這應該工作,但它是有問題的,如果這簡化查詢。 在WHERE
子句中重複GREATEST(a,b)
沒問題,imo。
MySQL不運行GREATEST(a,b)
兩次,因爲它的價值。
該聲明仍然很簡單。當你的問題是關於優化的時候,那麼DBMS比你更好。
你知道你**不能**在'where'子句中使用聚合函數,你需要使用'having'而不是'having'子句,你可以使用別名: - ) – Johan
解釋什麼使別名比擁有最大(a,b)兩次更簡單。我看不到任何簡化。 –