2016-05-12 97 views
2

如何用項目名稱替換'projectId'列中的值,假定名稱爲'project'的另一個表和兩個表與僱員輸出的'projectId'列':'後面提到的數字相關。需要如何使用另一個表中的另一個值更新mysql列?

+----+-----------------------+ 
| id | projectId    | 
+----+-----------------------+ 
| 1 | project:internProject | 
+----+-----------------------+ 

步驟::

> select * from employee; 
+----+-----------+ 
| id | projectId | 
+----+-----------+ 
| 1 | project:1 | 
+----+-----------+ 

希望的輸出

提取整數[完成]

update employee SET projectId = substring_index(projectId,':', -1); 

更新專案編號與名稱[不知道:(]

update employee SET projectId = concat('project:', select projectName from projects where projects.projectID = employee.projectId); 

回答

0

你需要在你的子請求括號。

update employee e 
set projectId = concat('project:', 
         (select projectName 
         from projects 
         where projectId = substring_index(e.projectId, ':', -1))); 
0

這應該做的工作:

UPDATE employee e, projects p 
SET e.projectId = CONCAT('project:',p.projectName) 
WHERE substring_index(e.projectId,':', -1) = p.projectID 

項目:恆定的還是它的變化?如果是這樣,您需要從員工處接收它

+0

感謝您的回答,項目是恆定的 –

0

使用SUBSTRING_INDEXJOIN

查詢

update employee e 
join project p 
on e.id = p.id 
set e.pid = concat(substring_index(e.pid, ':', 1), ':', 
       p.pname); 
+0

感謝剛纔忘了括號作爲ebahi說。 –

相關問題