我有以下两张表......
Table1
colA colB colC
1 a w
2 b w
3 c s
4 b g
5 n
Table2
colA colB colC
1 w f
2 w r
3 s g
我想使用UPDATE查询从table1复制到table2,我遇到的问题是我必须设置所有列名,其中每个表有100列,但我也有相同的列数和名称。
在php中运行查询UPDATE的简单方法是什么?
是否有一些foreach事情可能会...
这就是我现在拥有的......
public function update($id){
try {
UPDATE table1 b
INNER JOIN connect c
ON c.ID = b.ID
INNER JOIN table2 a
ON a.ID_a = c.ID_a
SET b.colA = a.colA,
b.colB = a.colB,
b.colC = a.colC
.
.
.
.
. coontinue here all column name..
.
.
WHERE a.ID_a = '".$id."' ";
} catch(PDOException $e) {
$e->getMessage();
}
return false;
}
请问一些想法?
答案 0 :(得分:4)
您不需要通过UPDATE
语法来完成此操作。您可以使用INSERT..SELECT
:
INSERT INTO `table2` SELECT * FROM `table1`
如果两个表中的结构完全相同,这将有效。如果没有,则必须编写列名(并将第一个表中的列映射到第二个表)。
如果您想要替换相应的值,那么您应该先删除当前值:
DELETE FROM `table2` WHERE `colA` IN (SELECT `colA` FROM `table1`)
答案 1 :(得分:1)
如果要更新第一个表中的数据,请使用其他表中的值,您可以使用下一个语句
UPDATE table_name AS t1
SET t1.field_name = (SELECT field_name FROM other_table AS t2 WHERE t1.field=t2.field)