SQL 插入到 with join 和 where
SQL Insert into with join and where
我有三个 table。例如:
新表:
config_id | name
12 | null
22 | null
旧表:
oldTable_id | name | value
1 | Jack | 10
2 | Frank | 22
关联表:
config_id | oldTable_id
12 | 1
22 | 2
我现在要做的是:
我想将 name
列从 oldTable
移动到 newTable
。我已经更改了 newTable
并添加了一个空的 name
列。现在我正在尝试编写正确的 INSERT INTO
语句。我到目前为止是:
INSERT INTO newTable (name)
SELECT name
FROM oldTable ot join associativeTable at on ot.oldTable_id = at.oldTable_id
WHERE at.config_id = newTable.config_id;
我有点迷路了。我以前写过 INSERT INTO
语句,但从来没有写过关联 table。正确的陈述如何寻找我的案例?
非常感谢您直接插入另一个 table 已经准备好的值的感觉。这确实是涉及大型 table 的实用解决方案。
我想我有一个更简单的方法:)
您可以简单地执行以下操作:
INSERT INTO newTable
SELECT name FROM oldTable;
如果这不起作用请告诉我。
我根据另一个网站的解释解决了它。工作 sql 脚本如下所示:
UPDATE newTable
INNER JOIN associativeTable ON (associativeTable.config_id = newTable.config_id)
INNER JOIN oldTable ON (associativeTable.oldTable_id = oldTable.oldTable_id)
SET newTable.name = oldTable.name;
一种方法是在 SET
部分使用子查询:
UPDATE newtable n
SET n.name = (SELECT name
FROM oldtable o
JOIN associativetable a
ON o.oldtable_id = a.oldtable_id
AND a.config_id = n.config_id
);
我有三个 table。例如:
新表:
config_id | name 12 | null 22 | null
旧表:
oldTable_id | name | value 1 | Jack | 10 2 | Frank | 22
关联表:
config_id | oldTable_id 12 | 1 22 | 2
我现在要做的是:
我想将 name
列从 oldTable
移动到 newTable
。我已经更改了 newTable
并添加了一个空的 name
列。现在我正在尝试编写正确的 INSERT INTO
语句。我到目前为止是:
INSERT INTO newTable (name)
SELECT name
FROM oldTable ot join associativeTable at on ot.oldTable_id = at.oldTable_id
WHERE at.config_id = newTable.config_id;
我有点迷路了。我以前写过 INSERT INTO
语句,但从来没有写过关联 table。正确的陈述如何寻找我的案例?
非常感谢您直接插入另一个 table 已经准备好的值的感觉。这确实是涉及大型 table 的实用解决方案。 我想我有一个更简单的方法:) 您可以简单地执行以下操作:
INSERT INTO newTable
SELECT name FROM oldTable;
如果这不起作用请告诉我。
我根据另一个网站的解释解决了它。工作 sql 脚本如下所示:
UPDATE newTable
INNER JOIN associativeTable ON (associativeTable.config_id = newTable.config_id)
INNER JOIN oldTable ON (associativeTable.oldTable_id = oldTable.oldTable_id)
SET newTable.name = oldTable.name;
一种方法是在 SET
部分使用子查询:
UPDATE newtable n
SET n.name = (SELECT name
FROM oldtable o
JOIN associativetable a
ON o.oldtable_id = a.oldtable_id
AND a.config_id = n.config_id
);