2015-12-14 4 views
1

Я пытаюсь запустить обновление ниже, но столкнулся с ошибкой «table is twoiguous».Обновление SQL с таблицами с псевдонимом по-прежнему возвращает ошибку «table is ambiguous»

UPDATE dbo.cg 
SET cg.column = gId.ID 
FROM dbo.a 
     INNER JOIN dbo.cg as cId ON cId.[a] = dbo.a.[c] 
     INNER JOIN dbo.cg as gId ON gId.[a] = dbo.a.[b]; 

В таблице dbo.a содержит данные, чтобы обновить значение в компьютерной графике, основываясь на отношении к той же таблице против значения в другом столбце. Это иерархия самореференций.

Как вы можете видеть, все сглажено, поэтому я немного смущен, почему это не сработает.

Большое спасибо за любую помощь, которая может быть предоставлена.

+0

'SET cg.column = ....', ну, у вас есть 2 'cg' таблицы в вашем запросе, вот почему вы получаете это сообщение – Lamak

+0

Даже если бы я сглазил два других? Я посмотрел, как бы вы предложили мне сделать это еще больше, чем я сделал. – K7Buoy

ответ

6

В SQL Server вы должны использовать псевдоним в update, а не в таблице. Кроме того, у вас нет псевдонима cg. Так что-то вроде этого:

UPDATE cId 
SET column = gId.ID 
FROM dbo.a a INNER JOIN 
    dbo.cg cId 
    ON cId.[a] = a.[c] INNER JOIN 
    dbo.cg gId 
    ON gId.[a] = a.[b]; 
+0

Большое спасибо за ответ Гордон. Я пробовал, что должен сказать, чтобы обойти это, но я ценю быстрый ответ. – K7Buoy

0

Не волнуйтесь, решите его на удачу.

Я присоединился внутренний стол к себе в отчаянии ...

UPDATE dbo.cg 
SET cg.column = gId.ID 
FROM dbo.a 
     INNER JOIN dbo.cg as cId ON cId.[a] = dbo.a.[c] 
     INNER JOIN dbo.cg as gId ON gId.[a] = dbo.a.[b] 
     INNER JOIN cg ON cId.[a] = cg.[a]; 

Если кто-нибудь может объяснить, почему это работает, я действительно ценю понимание логики MS SQL под ним.

 Смежные вопросы

  • Нет связанных вопросов^_^