1
我想要做的是使用从临时表中获取的值更新表。将临时表中的内容插入到更新查询中
见下面布局澄清:
我想要的用户名“测试”与ID = 1,变更为NEW_ID = 2的从临时表中的值。
Temporary table:
---------------------------------------------------------
| username | old_id | new_id | directory |
---------------------------------------------------------
| test | 1 | 2 | old |
---------------------------------------------------------
Actual table:
-----------------------------------------
| username | id | directory |
-----------------------------------------
| test | 1 | old |
| test | 2 | new |
-----------------------------------------
这是我迄今为止,但它的失败相当严重:
DROP TABLE IF EXISTS TMPRESULT;
CREATE TEMPORARY TABLE IF NOT EXISTS TMPRESULT AS (
SELECT
U.directory AS 'directory',
U.username AS 'Username',
U.ID AS 'old_id',
(
SELECT
T1.id
FROM table1 AS T1
WHERE U.username = T1.username
AND T1.directory = 'new'
) AS 'new_id'
FROM table1 AS U
WHERE U.directory = 'old'
AND U.username = 'test'
);
UPDATE table2 AS M
SET
M.id = T.new_id
FROM table2
INNER JOIN TMPRESULT AS T ON M.child_id = T.old_id
WHERE M.username = T.Username