2011-08-05 7 views
0

다음 SQL 문을 실행할 때 오류 메시지가 나타납니다. 그것은 아주 기본적인 성명서이고, 나는 정말 간단한 것을 간과해야합니다.SQL 별명 (AS) 사용시 문제점이 있습니까?

별칭을 제거하면 문이 올바르게 실행됩니다. 별칭을 다시 추가하면 오류가 발생합니다.

SSMS의 메시지 :

Msg 4104, Level 16, State 1, Line 2 
The multi-part identifier "T1.titleId" could not be bound. 

SQL 문 :

UPDATE People 
SET T1.titleId = T2.ID 
FROM people as T1 
INNER JOIN titles as T2 
ON T1.title = T2.Title 

업데이트 1 - 쉼표는 문장의 일부가 아닌 내가 여전히 오류를 받고 있어요.

+0

downvote의 왼쪽에있는 필드의 별명을하지? 진심으로? – DenaliHardtail

답변

2

이 시도 :

UPDATE t1 
SET T1.titleId = T2.ID 
FROM people as T1 
INNER JOIN people as T2 
ON T1.titleId = T2.titleId 

당신이 "사람"을 업데이트하기 때문에 그것은 T1.titleId을 찾을 수 없습니다 및 SQL은 당신이 T1 및 T2 별칭으로는 Person 테이블을 볼 수 있습니다 . 귀하의 경우 T1을 업데이트하고 싶습니다. 또한 내부 조인에 쉼표가 추가되었습니다.

+0

나는이 질문을 개정했다. 쉼표는 내가 시도한 다른 것의 남음이었습니다. 제거되었지만 여전히 오류가 발생했습니다. 귀하의 제안으로 문제가 해결되었으며 최대한 빨리 (5 분 미만) 받아 들일 것입니다. 감사! – DenaliHardtail

+0

@special - 애매 모호하지는 않지만 Brian과 나는 Keith가하기 전에이 문제를 확인했습니다. – JNK

3

편집 : T1에 변경된 사람 문제를 일으키는 T1 다음에 쉼표가 있습니다.

변경 문 :

UPDATE T1 -- People 
    SET T1.titleId = T2.ID 
FROM people as T1 --Removed the comma that was here 
INNER JOIN titles as T2 
    ON T1.title = T2.Title 
2

내가 as T1, 후 쉼표가 불필요하다고 생각합니다. 제거해보십시오.

4

두 가지 문제가 있습니다.

1 - 쉼표. 어떤 점에서 비추천적 인 암시적인 JOIN 구문을 사용했다고 생각합니다.

2 - JOIN 일 때 UPDATE 행의 별칭을 사용해야합니다. SET 필드에 t1이지만 UPDATE ing people이 일치하지 않습니다.

보십시오 : 당신은 당신의 UPDATE의 일부 구문 문제가

UPDATE t1 
SET T1.titleId = T2.ID 
FROM people as T1 
INNER JOIN titles as T2 
ON T1.title = T2.Title 
+1

자세한 내용을 확인하려면 UPDATE의 필드 목록이 지정된 테이블의 필드 여야합니다. 원래에서는 '사람'을 업데이트하려고했지만 'T1'에서는 필드를 변경하려고합니다. – Mike

+0

@mike - 감사합니다.이를 반영하여 업데이트했습니다. – JNK

5

. 그것은해야한다 :

UPDATE T1 
SET titleId = T2.ID 
FROM people as T1 
INNER JOIN titles as T2 
ON T1.title = T2.Title 
+0

+1 - 올바른 솔루션을 처음 게시 한 이후로 받아 들여야합니다. – JNK

0
UPDATE t1 
SET titleId = T2.ID 
FROM people as T1 
INNER JOIN people as T2 
ON T1.titleId = T2.titleId 

당신은 SET

관련 문제