2009-06-07 5 views
1

열 별칭을 사용할 수없고 MySql의 내부 선택에서 사용할 수없는 것 같습니다.
예를 들어 MySql에서 다음 작업을 수행하려면 어떻게해야합니까?MySql 내부 선택에서 열 별칭 사용

SELECT NAME,ID AS M_ID FROM EMPLOYEES 
WHERE EXISTS (SELECT 1 FROM MANAGERS WHERE MANAGERID = M_ID) 

MySql은 M_ID 별칭을 인식하지 못합니다.

내 테이블 구조 :

EMPLOYEES (ID,NAME) 
MANAGERS (MANAGERID,...) 

답변

1

당신이 뭘 하려는지? 매니저 테이블에 일치하는 레코드가있는 모든 직원을 얻는 것처럼 보입니까?

는 그 경우 당신이

를 사용할 수없는 경우
SELECT 
    e.name 
, e.id 
FROM 
    employees AS e 
    inner join managers AS m ON (e.id = m.managerid) 
5

하나는 원래의 열 이름 사용 - MANAGERS 테이블이 ID 열 필요가 없기 때문에이만큼 작동합니다을 :

SELECT NAME, ID AS M_ID 
FROM EMPLOYEES 
WHERE EXISTS (
    SELECT 1 
    FROM MANAGERS 
    WHERE MANAGERID = ID 
) 

또는 더 나은 아직, 테이블 별칭을 사용

SELECT e.NAME, e.ID AS M_ID 
FROM EMPLOYEES AS e 
WHERE EXISTS (
    SELECT 1 
    FROM MANAGERS AS m 
    WHERE m.MANAGERID = e.ID 
) 

열 별칭은 ORDER BY, GROUP BYHAVING 절에서만 사용할 수 있습니다. 표준 SQL에서는 WHERE 절에있는 열 별칭을 참조 할 수 없습니다. WHERE 코드가 실행될 때 열 값이 아직 결정되지 않을 수 있으므로이 제한이 적용됩니다.

그건 그렇고 - 주어진 문제에 대해 부검을 사용하는 것이 최선의 해결책이 아닐 수도 있습니다. 이 간단한 경우에는 MySQL 쿼리 최적화 프로그램이 실행 계획에서 간단한 방법을 찾을 수 있다고 가정합니다.

관련 문제