2013-10-08 50 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