2012-10-23 7 views
0

이는 MySQL의 스크립트에 정의되어 있음을 감안할 때 : mysql 별칭을 어떻게 액세스해야합니까?

`Project1`.`Id` AS `Id1d334656-0d51-4bf6-bb08-6c25d01e7745` 

`Project1`.`Id` 

그 이름으로 만

`Project1`.`Id1d334656-0d51-4bf6-bb08-6c25d01e7745` 

에 의해 더 이상 액세스 할 수 있음을 의미하지 않는다?

배경 :이 스크립트는 MySqlConnector/net에 의해 생성되며 생성 된 명령의 일부입니다.

답변

2

별칭에는 테이블 할당이 없으므로 단지 ID1d3346etc.... 일뿐입니다. 그렇게했다면 별명의 목적을 무효화 할 수 있습니다.

select table1.x AS abc, table2.x AS abc 

두 개의 별칭이 서로 다른 테이블에서 비롯된 경우에도 오류가 발생합니다.

+0

단 한 사람의 경우, 'select table1.x AS abc'가 정의되었고, 나중에'table.x'를 사용하여'table.x'를 참조하려는 시도가 있었고, 그 결과로 어떤 예외가 발생할 수 있습니까? –

+0

아무 것도 예외를 던질 수 있다고 생각하지 않습니다. 내 코드 또는 구조에 오류가 있어야합니다. 고마워, 마크 나는이 대답을 수락하고있다. –

+0

별칭은 쿼리 수준에서만 존재합니다. 'select table1.x AS abc, table2.abc'는'abc '와'table2.abc '가 완전히 다른 두 가지 일이기 때문에 오류가 아닙니다. 그러나 나중에'abc' 만 사용하려고하면 애매합니다. –

1

예. 선택하는 동안 열 이름 바꾸기와 거의 같습니다. select 쿼리 외부에서 별칭을 사용하여 열을 조회해야하지만 선택 쿼리에서는 예를 들어 테이블 열을 사용해야합니다. 아래 :

select col1 as a 
    from table b 
    where col1 = 'xxx'; 

하지만 외부의 선택 쿼리는, 별명이 사용되어야한다 : 당신은 테이블 열을 사용하려고하면

select a 
from (select col1 AS a From table) b 
where a = 'xxxx'; 

, 그것은 실패합니다

<<----FAILURE --> 
select col1 
from (select col1 AS a From table) b 
where a = 'xxxx'; 
관련 문제