[SQL] 당신은 MySQL의에서 WHERE 절에 별칭을 사용할 수 있습니까?
SQL당신은 MySQL의에서 WHERE 절에 별칭을 사용할 수 있습니까?
나는 WHERE 절에 별칭을 사용해야하지만, 그것은 그것의 알 수없는 열 것을 말해 유지합니다. 이 문제를 해결하기 위해 어떤 방법이 있나요? 나는 더 높은 X보다 등급이 기록을 선택해야합니다. 평가는 다음과 같은 별칭으로 계산된다 :
sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating
해결법
-
==============================
1.당신은, 예를 들어, 별칭을 볼 수 HAVING 절을 사용할 수 있습니다
당신은, 예를 들어, 별칭을 볼 수 HAVING 절을 사용할 수 있습니다
HAVING avg_rating>5
하지만 where 절에 당신은 예를 들어, 표현식을 반복해야합니다
WHERE (sum(reviews.rev_rating)/count(reviews.rev_id))>5
그러나! 모든 표현은 허용됩니다 -하지 작업,이 경우는 HAVING 절을 사용해야합니다 SUM과 같은 집계 함수를 사용하여.
MySQL의 매뉴얼에서 :
-
==============================
2.몰라 만약이 작품 MySQL의에서뿐만 아니라 그냥 같이 포장 할 수 있습니다 SQLSERVER 사용 :
몰라 만약이 작품 MySQL의에서뿐만 아니라 그냥 같이 포장 할 수 있습니다 SQLSERVER 사용 :
select * from ( -- your original query select .. sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating from ...) Foo where Foo.avg_rating ...
-
==============================
3.이 질문은 매우 오래되어 하나의 대답은 이미 160 표를 얻은 ...
이 질문은 매우 오래되어 하나의 대답은 이미 160 표를 얻은 ...
그럼에도 불구하고 나는이 명확하게 것 : 문제는 별명이 WHERE 절에 사용할 수 있는지 여부에 대해 사실이 아니다.
sum(reviews.rev_rating) / count(reviews.rev_id) as avg_rating
집계입니다. WHERE 절에서 우리는 그 값을 보면 테이블에서 우리가 원하는 기록을 제한합니다. 합은, 그러나, 우리는 기록에서 찾을 값없는 (reviews.rev_id) (reviews.rev_rating) 및 계산; 그들은 우리가 단지 기록을 집계 한 후 얻을 값입니다.
따라서 WHERE 부적절하다. 우리가 집계 한 후 결과 행을 제한 원하는대로 우리는 HAVING 필요가 없다. 그것은 될 수 없습니다
WHERE avg_rating > 10
...도 아니다
WHERE sum(reviews.rev_rating) / count(reviews.rev_id) > 10
그 후.
HAVING sum(reviews.rev_rating) / count(reviews.rev_id) > 10
반면에 가능하며 SQL 표준을 준수합니다. 이므로
HAVING avg_rating > 10
MySQL은에서만 가능합니다. SELECT 절을 한 후 실행받을 예정대로 그것은 표준에 따라 유효한 SQL하지 않습니다. MySQL의 문서에서 :
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html
-
==============================
4.쿼리가 정적 인 경우, 뷰를 쿼리하는 동안 다음 WHERE 절에 그 별칭을 사용할 수있는보기로 정의 할 수 있습니다.
쿼리가 정적 인 경우, 뷰를 쿼리하는 동안 다음 WHERE 절에 그 별칭을 사용할 수있는보기로 정의 할 수 있습니다.
-
==============================
5.
SELECT * FROM (SELECT customer_Id AS 'custId', gender, age FROM customer WHERE gender = 'F') AS c WHERE c.custId = 100;
from https://stackoverflow.com/questions/200200/can-you-use-an-alias-in-the-where-clause-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 숫자, 부동 소수점과 소수의 차이 (0) | 2020.03.10 |
---|---|
[SQL] 왼쪽 외부는 내 왼쪽 테이블에서 모든 행을 반환하지 않습니다하세요? (0) | 2020.03.10 |
[SQL] PostgreSQL을 GROUP_CONCAT 동등한? (0) | 2020.03.10 |
[SQL] SQL은 - VS 어디를 가진 (0) | 2020.03.10 |
[SQL] 절 단락 평가 된 SQL인가? (0) | 2020.03.10 |