2011-08-11 4 views
1

SQL 쿼리에서 반복 가능한 패턴을 단순화하는 방법은 무엇입니까?

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) 
FROM my_table 
WHERE GREATEST(a,b) > 25 

같은 뭔가 :

단순화하는 것이 가능하다

+0

당신은 ** where 절에서 집계 함수를 사용할 수 없다는 것을 알고 있습니다. 대신에 'having'을 사용해야하고,'having' 절에서 별칭을 사용할 수 있습니다 : -) – Johan

+0

가장 큰 (a, b)를 두 번 사용하는 것보다 간단하게 별칭을 갖는 것을 설명합니다. 나는 어떤 단순화도 볼 수 없다. –

답변

4
SELECT GREATEST(a,b) AS max_a_b 
FROM my_table 
HAVING max_a_b > 25 

having 절을 사용하면 레벨이 존재하는 동안 별칭이 존재하지 않습니다.

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 절에 반복하면됩니다.

1

MySQL은 GREATEST(a,b)을 두 번 실행하지 않습니다.

-1

진술은 여전히 ​​간단합니다. 그리고 당신의 질문이 최적화에 관한 것이라면, 이것은 당신보다는 DBMS에 의해 더 잘 수행됩니다.

관련 문제