替换表中的所有现有数据

时间:2011-07-21 14:56:23

标签: php mysql sql

我正在尝试用指定的字段替换表中的所有数据(例如user_id = some_number)。我已尝试DELETE,然后是INSERT,但这似乎有些问题,我正在寻找更好的解决方案来做到这一点。另外,大多数行仍然是相同的,所以这种方法可能效率不高。我遇到了INSERT ON DUPLICATE KEY / REPLACE,但如果我理解正确,那些会保留一些旧数据而不删除它。我已经考虑过做SELECT并比较PHP中的值,但是想到mysql可能已经为我实现了这个。是否可以选择使用查询?

更新: 为了更清楚,让我们说我在表格中有my_table这些值:

col1 col2 col3  
v1   v2   v3   
v1   v4   v5  
v1   v6   v7
v2   v8   v9

我想用这些数据替换所有col1 = v1行:

col1 col2  col3  
v1   v10   v11   
v1   v4    v5 

所以我应该最后删除一行,保持一行,然后更新另一行。 因此,在操作结束时,表格将如下所示:

col1 col2  col3  
v1   v10   v11   
v1   v4    v5 
v2   v8   v9

这清楚了吗?

1 个答案:

答案 0 :(得分:3)

START TRANSACTION;
DELETE FROM my_table WHERE col1='v1';
INSERT INTO my_table (col1, col2, col3) values ('v1', 'v10', 'v11');
INSERT INTO my_table (col1, col2, col3) values ('v1', 'v4', 'v5');
COMMIT;