MySQL 5.1.61 - 基于两个单独的表更新表

时间:2013-12-05 21:20:42

标签: mysql sql

我有三张桌子:

Table_1:
id   name
1    NULL
2    OLED   
3    legion 
4    project100 
5    group3 
6    0  
7    25 

Table_2:
projectID   externalID  projectTypeID   projectDescription 
0           0               5               UNALLOCATED
25          220339          1               OLED

Table_3:
typeID   typeDesc   
1        Playbook Aligned
2        Transactional Project
3        External Programs
4        UPI
5        Unallocated

我正在尝试更新Table_1。我只想更新一个带有'name'的行。我知道我可以通过以下方式选择:

SELECT `name`
FROM `Table_1`
WHERE `name` REGEXP '^[0-9]*$'

这给了我:

name    
0
25

我现在要做的是根据Table_2和Table_3更新这些Table_1条目。我需要在Table_2中找到Table_2.projectID = Table_1.name的行。然后,我需要在Table_3中找到Table_3.typeID = Table_2.projectTypeID的行。最后,我需要使用Table_3.typeDesc更新Table_1.name。这是一个令人困惑的情况 - 遗憾的是,我无法改变这些表的设置方式。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

UPDATE
Table_1
JOIN Table_2 on(Table_2.projectID = Table_1.name)
JOIN Table_3 on(Table_3.typeID = Table_2.projectTypeID)
SET Table_1.name = Table_3.typeDesc
WHERE Table_1.name REGEXP '^[0-9]*$';