2012-06-28 2 views
1

Это мое заявление о обновлении, которое отлично работает. Если таблица 1 и таблица 2 содержат одинаковый серийный номер, тогда таблица 1 обновляется с да, и если она не будет, то она обновляется с помощью no.Установите оператор select в операторе обновления

UPDATE dbo.table1 
SET [Match] = CASE WHEN dbo.table2.[Serial Number] IS NOT NULL 
THEN 'yes' ELSE 'no' END 
FROM dbo.table1 LEFT OUTER JOIN dbo.table2 
    ON dbo.table2.[Serial Number] = dbo.table1.[Serial Number] 
AND dbo.table1.[Date] = 'JAN11' AND 
     dbo.table1.[Install] = 'new' AND 
     dbo.table2.[Date] = 'JAN11' AND 
     dbo.table2.[Install] = 'new' 

Проблема в настоящее время все в таблице 1, что Isnt называют также обновляется с не так, что я хочу сделать, это первый вызвать отборное заявление ... что-то вроде этого

select * from table1 where [Date] = 'JAN11' AND [Install] = 'new' 

и вложите его в обновление, чтобы только соответствующие столбцы обновлялись без или да ...

ответ

14
UPDATE t1 
    SET [Match] = CASE WHEN t2.[Serial Number] IS NOT NULL 
    THEN 'yes' ELSE 'no' END 
FROM dbo.table1 AS t1 
LEFT OUTER JOIN dbo.table2 AS t2 
    ON t1.[Serial Number] = t2.[Serial Number] 
    AND t1.[Date] = t2.[Date] 
    AND t1.[Install] = t2.[Install] 
WHERE t1.[Date] = 'JAN11' 
    AND t1.[Install] = 'new'; 
Смежные вопросы