2010-02-10 54 views
2

如何交換SQL中的記錄。我有一個案例,我必須將一個員工的記錄交換到另一個員工,例如我必須更新,如「B的頭上戴着帽子」,A頭上戴着B的帽子「。 只有我需要查詢,我有領域。這應該是什麼問題?

什麼應該是最好的方法呢?有沒有簡單的查詢呢?

+8

您應該爲您的許多問題接受一些答案,並在問題中添加一些示例數據。 – 2010-02-10 11:49:36

+1

你需要更具體。顯示你的模式,一些例子元組,你已經嘗試了什麼,以及你想要結果是什麼。 – 2010-02-10 11:51:35

+0

您可以使用RDBMS提供的過程語言。然後像使用任何通用語言一樣使用臨時變量並交換數據。 – 2010-02-10 11:52:04

回答

2
declare @hatIdA int 
declare @hatIdB int 

select @hatIdA = hatId from employees where empID = 'A' 

select @hatIdB = hatId from employees where empID = 'B' 

update employees set hadId = @hatIdB where empID = 'A' 

update employees set hadId = @hatIdA where empID = 'B' 

我會做這樣......

3

帽子和員工 'A' 和 'B' 例如,在僱員表使用self-join爲MySQL:

UPDATE 
    employees AS e1 
JOIN 
    employees AS e2 ON (e1.employee_id = 'A' AND e2.employee_id = 'B') 
SET 
    e1.hat = e2.hat, 
    e2.hat = e1.hat; 

延伸閱讀:

+0

我可以在SQL中做到這一點嗎? – ahmed 2010-02-10 12:12:10

+0

這個很酷!但我如何在SQL中執行此操作,我正在使用sql 2000 – ahmed 2010-02-10 12:13:15