문제

왜 이것이 실패하는지 궁금합니다

mysql> SELECT Continent C, Name, SurfaceArea
    -> FROM Country
    -> WHERE SurfaceArea = (
    -> SELECT MAX(SurfaceArea)
    -> FROM Country
    -> WHERE Continent = C);
ERROR 1054 (42S22): Unknown column 'C' in 'where clause'

일부 샘플 연습에 대한 인증 안내서가 제공 한 답변입니다.

BTW, 별명은 언제 사용해야합니까? Isit 선택 사항?

도움이 되었습니까?

해결책

상관 관계 서브 쿼리를 실행하려면 외부에 대한 별칭이 필요합니다. 테이블. 외부 테이블에 대한 별칭을 만들었습니다 필드. 아래 수정 된 코드를 살펴보십시오. 서브 쿼리에서 참조되는 테이블 (COU)에 대한 별칭이있는 코드를 살펴보십시오 (필드 별칭이 필요하지 않으므로 제거했습니다. 원하는 경우 다시 추가하는 데 아무런 해가 없습니다). :

SELECT Continent, Name, SurfaceArea
FROM Country Cou
WHERE SurfaceArea = 
(
    SELECT MAX(SurfaceArea)
    FROM Country
    WHERE Continent = Cou.Continent
);

AS의 사용법과 관련하여 선택 사항입니다. 예를 들어, 위의 쿼리에서 쓸 수 있습니다. Country AS Cou, 그것은 동일 할 것입니다.

다른 팁

MySQL 버전과 관련이 있다고 가정합니다. 방금 테스트했습니다 바로 그거죠 동일한 쿼리와 성공 (최소한 구문 적으로). 그게 MySQL 5.0.45.

MySQL 버전이 문제가되지 않으면 쿼리를 정리할 수도 있습니다. 어리석게 들릴 수도 있지만 때로는 소리가납니다 인쇄 할 수 없습니다 문자는 입력하거나 복사/붙여 넣기 동안 문자가 미끄러질 수 있습니다 (특히 가이드에서 나온 것이기 때문에 PDF에서 복사/붙여 넣기를 생각하고 있습니다).

그리고 네, AS 별칭의 선택 사항입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top