基于另一个表中的所有值作为参数更新表

时间:2013-10-08 14:58:16

标签: sql stored-procedures

Table1     Column1     Value1     Table2     Column2        Value2
-------------------------------------------------------------------
tbl_start   DESC        blue      tbl_end     Description     red
tbl_job     JOB         Doctor    tbl_role    JOB             Surgeon

我正在尝试创建一个SQL存储过程,它将根据映射表更新表(我已经创建了上面的一个作为示例)

我尝试了一些变体,但似乎无法理解查询的编写方式

例如:

UPDATE @TABLE2 SET @Column2 = @Value2 Where @Value2 = @Value1

所以说tbl_end在Description列中的值为'blue',在存储过程运行后它应该已经将'blue'的所有实例更新为'red'

同样地,如果tbl_role在JOB列中的值为'Doctor',则在存储过程运行后,它应该将'Doctor'更改为'Surgeon'

感谢您提供任何帮助,建议或意见

我感谢任何反馈

(在这种情况下不担心安全风险)

1 个答案:

答案 0 :(得分:1)

这是UPDATE JOIN声明的经典案例:

UPDATE Table1
SET Table2.Value2 = Table1.Value1
FROM Table1 JOIN Table2 ON Table1.Column1 = Table2.Column2

有关详细信息,请参阅此链接:

SQL update query using joinsHow can I do an UPDATE statement with JOIN in SQL?

修改

如果您想要更新多个表 - 因为您无法在一个语句中更新一个表 - 您必须针对您要更新的每个表运行此代码