2013-10-08 46 views
1
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有值'蓝色',在存储过程运行后,它应该已经更新了'蓝色'的所有实例到'红色'

以同样的方式,如果tbl_role在JOB列中具有值'Doctor',存储过程运行时,它应该已经改变了“医生”到“外科医生”

感谢您的帮助,建议或意见

我明白任何反馈

(不担心在这种情况下的安全隐患)

+0

这是'UPDATE'与'JOIN'语句的经典案例 –

+0

@Yosi感谢您的回复!请你能解释一下 – neeko

回答

1

这是的UPDATEJOIN声明的经典案例:

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?

编辑:

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

+0

但是,谢谢你,表格名称是可变的,你从我绘制的表格中看到,更新语句必须能够更新多个表格?例如。更新指定列中的所有'Table2'(tbl_end,tbl_role),如果它有意义,则用value2替换其当前值,如果它当前等于值1? – neeko

+0

在一条语句中无法更新多个表格 –

+0

存储过程无法实现吗? – neeko