如何向数据库表中新增复制自旧记录、仅修改当前时间戳和状态的新记录
你可以通过INSERT ... SELECT语法一步完成需求,无需先查询旧记录再拼接插入语句,具体实现如下:
实现代码
-- 替换示例中的表名、字段名为你实际使用的名称即可 INSERT INTO 业务表名 (普通字段1, 普通字段2, ..., 时间戳字段, 状态字段) SELECT 普通字段1, 普通字段2, ..., CURRENT_TIMESTAMP, '你的新状态值' FROM 业务表名 -- 定位你要复制的旧记录,下方示例取最新的一条旧记录 ORDER BY 主键ID DESC LIMIT 1;
适配说明
- 若需要复制指定的旧记录,将
ORDER BY 主键ID DESC LIMIT 1替换为定位旧记录的WHERE条件即可,例如:WHERE id = 要复制的旧记录ID - 如果时间戳字段存储的是秒级数值格式,将
CURRENT_TIMESTAMP替换为UNIX_TIMESTAMP() - 自增主键无需写入INSERT的字段列表,查询时也不用带出主键,数据库会自动生成新的主键值
参考信息
现有表结构:
预期结果:
内容的提问来源于stack exchange,提问作者drali
相关产品推荐
相关产品推荐

