2013-05-09 5 views
0

У меня есть 2 таблицы vehicle_table и vehicle_group_tableОбновление столбца таблицы, используя другой столбец той же таблицы

  • vehicle_table -> Имеет столбцы -> vehicleid, имя_группы, GroupID
  • vehicle_group_table -> имеет столбцы -> GroupID, имя_группы

Я хочу обновить GroupID колонку моего vehicle_table путем присоединения vehicle_group_table на его общий Groupname колонке

UPDATE vehicle_table 
    SET vehicle_table.groupid = vehicle_group_table.groupid 
    WHERE vehicle_table.groupname = vehicle_group_table.groupname 

Но это, похоже, не работает.

+0

Может вы уточняете «Но это, кажется, не работает»? Какое сообщение об ошибке? – Patashu

ответ

3
UPDATE 
    V 
SET 
    groupid = VG.groupid 
FROM 
    vehicle_table V 
    JOIN 
    vehicle_group_table VG ON V.groupname = VG.groupname 

Вы должны коррелировать 2 таблицы с помощью объединения. Существуют и другие способы с подзапросами и т. Д.

Примечание: не использовать использовать псевдонимы в целевых/целевых столбцах в предложении SET, как предложено в других ответах. Он терпит неудачу в SQL Server Не в SQL Server 2012, так что я думаю, что поведение изменилось

Для более сложной настройки: SQL update query using joins

+0

Спасибо большое @gbn .. –

0

Вы можете использовать следующий синтаксис в вашем сценарии:

UPDATE TargetTable

ИЗ SourceTable

SET TargetTableField = SourceTable.SourceTableField

WHERE TargetTable.Field = TargetTable.Field;

+1

Это не синтаксис SQL Server – gbn

0

Попробуйте это: -

Update vt 
Set vt.groupiid = vgt.groupid 
from vehicle_table vt 
inner join vehicle_group_table vgt 
on vt.groupname = vgt.groupname 
0

Попробуйте

UPDATE A SET A.groupid = B.groupid 
    FROM vehicle_table A INNER JOIN vehicle_group_table B ON 
    A.groupname = B.groupname 
0

Попробуйте это:

UPDATE a set a.groupid =b.groupid 

from vehicle_table a 
inner join 
vehicle_group_table b 

on a.groupname = b.groupname 
Смежные вопросы