Php 使用相同的列计数和名称从一个表复制到另一个表
我有以下两张桌子Php 使用相同的列计数和名称从一个表复制到另一个表,php,mysql,pdo,Php,Mysql,Pdo,我有以下两张桌子 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
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
我想使用更新查询从表1复制到表2,问题是我必须设置所有的列名,其中每个表有100列,但我也有相同的列计数和名称
在php中运行查询更新的简单方法是什么
有没有什么东西可能是
这是我现在拥有的
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;
}
有什么想法吗?您不需要通过
更新
语法来实现。您可以使用插入..选择:
INSERT INTO `table2` SELECT * FROM `table1`
如果两个表中的结构完全相同,这将起作用。否则,您必须写入列名(并将列从第一个表映射到第二个表)
如果要替换相应的值,则应首先删除当前值:
DELETE FROM `table2` WHERE `colA` IN (SELECT `colA` FROM `table1`)
您不需要通过
UPDATE
语法来执行此操作。您可以使用插入..选择:
INSERT INTO `table2` SELECT * FROM `table1`
如果两个表中的结构完全相同,这将起作用。否则,您必须写入列名(并将列从第一个表映射到第二个表)
如果要替换相应的值,则应首先删除当前值:
DELETE FROM `table2` WHERE `colA` IN (SELECT `colA` FROM `table1`)
若要更新第一个表中的数据,请使用其他表中的值,可以使用next语句
UPDATE table_name AS t1
SET t1.field_name = (SELECT field_name FROM other_table AS t2 WHERE t1.field=t2.field)
若要更新第一个表中的数据,请使用其他表中的值,可以使用next语句
UPDATE table_name AS t1
SET t1.field_name = (SELECT field_name FROM other_table AS t2 WHERE t1.field=t2.field)
我很确定一个有100列的表没有被规范化。事实上,结构是这样的……这可能是“它是怎样的”,但这并不一定意味着它被规范化了!里面有什么东西?我很确定一个有100列的表没有被规范化。实际上,结构是这样的……可能是“它是怎样的”,但这并不一定意味着它被规范化了!你有什么样的东西?这将创建新行,而不是从一个表中更新另一个表中的数据。是的,但这不是OP想要的吗?(upd.编辑文章以实现替换问题)是的。只要您先删除。我如何使用INSERT语句,在重复键更新时…?不,如果您先
删除项,则不会复制键值,这将创建新行,而不是更新另一个表中的数据。是的,但不是OP想要的吗?(upd.编辑文章以实现替换问题)是的。只要您先删除。在重复密钥更新时,我如何与INSERT语句一起使用…?否,如果您先delete
项,您的密钥值将不会重复