2016-02-19 80 views
0

獲取數據後更新的表,我有兩個表,如下所示:如何從其他表

active_employee,擁有ID,EMAIL_ID,作業地點和PROJECT_ID

project_relation,擁有ID ,email_id和project_id。

我的問題是,我想更新project_relation表的project_id列,條件是如果兩個表中的project_id的值不相同,那麼它必須從「active_employee」表中提取值並更新project_relation表中相應的email_id。

幫助我如何做到這一點!

+0

您在使用做多表[MySQL的UPDATE語句的語法這個使用代碼 –

+0

可能的複製WHERE子句](http://stackoverflow.com/questions/15037883/mysql-update-syntax-with-multiple-tables-using-where-clause) – Shadow

+0

你可以在更新中使用連接 – jean

回答

0

我相信一個UPDATE從一個JOIN將幫助:

UPDATE 
    project_relation 
SET 
    project_relation.project_id = active_employee.project_id 
FROM 
    project_relation PR 
INNER JOIN 
    active_employee AE 
ON 
    PR.columns_id = AE.columns_id 

只是檢查下劃線..它可能會產生問題..你可以將其刪除,並在數據庫列名也改變。

或簡單地嘗試這個 -

UPDATE project_relation SET project_relation.project_id = active_employee.project_id where project_relation.columns_id = active_employee.columns_id; 
0

我覺得我得到你所需要的。我創建了一些臨時表來替換您的實際表以進行測試。

我用一個子查詢來重命名一些列名的刪除,因爲更新表的模糊名稱:

DECLARE @ACTIVE_EMPLOYEE TABLE (columnid UNIQUEIDENTIFIER, emailid UNIQUEIDENTIFIER, job VARCHAR(200), location VARCHAR(200), projectid UNIQUEIDENTIFIER) 
DECLARE @PROJECT_RELATION TABLE (columnid UNIQUEIDENTIFIER, emailid UNIQUEIDENTIFIER, projectid UNIQUEIDENTIFIER) 

UPDATE @PROJECT_RELATION 
SET projectid = active.proid 
FROM (SELECT columnid, 
      emailid [emid], 
      job, 
      location, 
      projectid [proid] 
     FROM @ACTIVE_EMPLOYEE) active 
WHERE active.emid = emailid 
AND active.proid <> projectid