使用同一个表的另一列更新表的列

时间:2013-05-09 11:36:15

标签: sql-server sql-server-2008

我有2张表vehicle_table和vehicle_group_table

  • vehicle_table - >有列 - > vehicleid,组名,组识别符号
  • vehicle_group_table - >有列 - > GROUPID,组名

我想通过在其公共组名列上加入vehicle_group_table来更新我的vehicle_table的groupid列

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

但这似乎无效。

5 个答案:

答案 0 :(得分:3)

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

您需要通过JOIN关联2个表。子查询等还有其他方法

注意:在SET子句中的目标/目标列中使用别名,如其他答案中所建议的那样。它在SQL Server中失败不在SQL Server 2012中,所以我认为行为已更改

对于更复杂的设置:SQL update query using joins

答案 1 :(得分:0)

您可以在方案中应用以下语法:

更新TargetTable

FROM SourceTable

SET TargetTableField = SourceTable.SourceTableField

WHERE TargetTable.Field = TargetTable.Field;

答案 2 :(得分:0)

试试这个: -

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

答案 3 :(得分:0)

试试吧

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

答案 4 :(得分:0)

试试这个:

UPDATE a set a.groupid =b.groupid

from vehicle_table a
inner join 
vehicle_group_table b

on a.groupname = b.groupname