我有三张桌子:
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。这是一个令人困惑的情况 - 遗憾的是,我无法改变这些表的设置方式。任何帮助表示赞赏。
答案 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]*$';