2014-11-12 3 views
2
UPDATE [Current] 
SET 
    C_OS = CASE WHEN [Current].[OS] <> [viLastRecord].[OS] THEN '1' END, 
    C_VER = CASE WHEN [Current].[VER] <> [viLastRecord].[VER] THEN '1' END 
WHERE 
    [Current].VHOST = viLastRecord.VHOST AND 
    [Current].HOSTNAME = viLastRecord.HOSTNAME 

Если я запускаю этот запрос, я получил следующее сообщение об ошибке:таблицы SQL обновления, используя случай

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "viLastRecord.VHOST" could not be bound.
Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "viLastRecord.HOSTNAME" could not be bound.

ответ

2

Вам нужен joinviLastRecord, потому что это таблица, и она не определена в запросе.

Судя по синтаксису, похоже, что вы используете SQL Server. Итак, вы можете попробовать следующее:

UPDATE c 
    SET C_OS = (CASE WHEN c.[OS] <> vlr.[OS] THEN '1' END), 
     C_VER = (CASE WHEN c.[VER] <> vlr.[VER] THEN '1' END) 
    FROM [Current] c JOIN 
     viLastRecord vlr 
     ON c.VHOST = vlr.VHOST AND 
      c.HOSTNAME = vlr.HOSTNAME; 
Смежные вопросы