2014-04-30 88 views
0

我有一個查詢:MySQL的更新選擇

SELECT assets.serial, employees.uid from assets 
inner join emp_as on assets.serial = emp_as.serial 
inner join employees on concat(emp_as.first_name,emp_as.last_name) = concat(employees.first_name,employees.last_name) 

返回兩列,一asset serial(唯一)和employee ID。我想將assets.employee_id字段更新爲select.employee_id where the asset.serial = select.serial(從該查詢中選擇僞代碼作爲結果)。

+0

你是什麼意思的'select.employee_id'? – Saurabh

+0

我的意思是select語句結果中的employee_id。 – MLEV

回答

0

這應該做的工作:

UPDATE assets set assets.employee_id = employees.uid 
inner join emp_as on assets.serial = emp_as.serial 
inner join employees on concat(emp_as.first_name,emp_as.last_name) = concat(employees.first_name,employees.last_name) 
+0

無法執行此操作。 「來自資產」附近存在語法錯誤。 – MLEV

0

沒有看到你的數據庫,我不能100%肯定這是你想要的,但我相信這應該工作。 Mysql對於允許更新連接非常友善,因此您不需要擔心創建臨時表或子查詢。

update assets 
join emp_as on assets.serial = emp_as.serial 
join employees on concat(emp_as.first_name,emp_as.last_name) = concat(employees.first_name,employees.last_name) 
set assets.employee_id = employees.uid 
+0

由於某種原因,這隻適用於大約950行的66行。 – MLEV

+0

忘記了,這是因爲select語句甚至沒有返回所有的行 – MLEV