打开一条记录,更新它并在MySQL中作为新记录插入

时间:2014-03-04 18:33:57

标签: mysql sql-update sql-insert

我有一个包含10个字段的数据库,其中只有少数字段经常更改。我想打开当前记录,更新它,然后使用新的自动ID将其输入数据库,同时保留以前的记录。

如果我插入新记录,我必须重新输入所有信息,即使它没有改变。 如果我更新记录,它将覆盖以前的值。

任何建议都将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以通过两个不同的查询来完成:SELECT和INSERT,或者您可以使用INSERT INTO SELECT构造。查看文档以获取完整参考http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

答案 1 :(得分:0)

的适当修改版本怎么样?
insert into table select * from table where id='current_id'

示例查询:假设我想阅读第一条记录,解除学生,主题但更改标记并插入新记录

insert into score(student,subject,marks) 
select student,subject,'30' from score where id=1;


Sample Data
+---------+---------+-------+----+
| student | subject | marks | id |
+---------+---------+-------+----+
| A1      | phy     |    20 |  1 |
| A1      | bio     |    87 |  2 |
| A2      | che     |    24 |  3 |
| A3      | che     |    50 |  4 |

Table structure:

+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| student | varchar(20) | YES  |     | NULL    |                |
| subject | varchar(20) | YES  |     | NULL    |                |
| marks   | int(1)      | YES  |     | NULL    |                |
| id      | int(10)     | NO   | PRI | NULL    | auto_increment |
+---------+-------------+------+-----+---------+----------------+