MySql:复制sql行并在更新其他字段时保持某些字段不变

MySql:复制sql行并在更新其他字段时保持某些字段不变,mysql,sql,Mysql,Sql,我有一个有三列的表,我想复制/粘贴同一个表中的所有三列,但是,在这三列中,我想用当天特定的新数据更新两列,同时保持一列不变。下表: ticket_number | book_id | log_id ------------- | ------- | ------ 1 | 1 | 120 12 | 2 | 120 23 | 3 | 120 我想: 1复制所有列并粘贴到同一个表

我有一个有三列的表,我想复制/粘贴同一个表中的所有三列,但是,在这三列中,我想用当天特定的新数据更新两列,同时保持一列不变。下表:

ticket_number | book_id | log_id
------------- | ------- | ------
            1 |       1 |    120
           12 |       2 |    120
           23 |       3 |    120
我想:

1复制所有列并粘贴到同一个表中

2使用当天的新数据(例如2、13、25)更改“票证号”列,并使用当天的id(例如121)更改“日志id”列,同时保持“簿记id”列不变

我试过了,但没有用:

在票号、图书id、日志id中插入,从票中选择2、13、24、图书id、121

这是供参考的模式


SELECT查询需要返回要插入的行

更新:您可以使用单独的表,这可能更容易。大概是这样的:

CREATE TABLE id_map (
old_ticket_number NUMBER,
new_ticket_number NUMBER
);
您可以将这些值插入此表中。 然后可以使用此查询:

INSERT INTO ticket (ticket_number, book_id, log_id)
SELECT 
m.new_ticket_number,
t.book_id,
121
FROM ticket t
INNER JOIN id_map m ON t.ticket_number = m.old_ticket_number;

这就是您要查找的内容吗?

请将数据作为格式化文本发布。还有,哪一个数据库管理系统?这是我的第一篇帖子,谢谢你。数据库管理系统是MySQLI,我每天都在努力跟踪票号。票属于不同的书。因此,books列将保持不变,尽管每天记录单和日志都会发生变化。2,13,24是票证的更新值,121是日志的更新值;查看与您的MySQL服务器版本对应的手册,以了解使用“CASE,book_id,121 FROM ticket’在第7行,我可以理解您陈述的逻辑,但可能很难对案例进行单独硬编码,因为我的数据来自REACT前端(以数组的形式),而我的实际应用程序大约有70个ticket。除了逐个更新每个值之外,还有其他方法吗。你认为创建一个新表而不是更新旧表可能是一个更好的选择吗?我明白了。我认为创建另一个表来保存新旧ID之间的映射可能是一个更好的选择。然后,您可以编写一个SELECT查询来获取ID。我已经更新了我的答案。