You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同表中复制一列数据到另一列且排除第一条记录

实现方案

前置说明

关系型数据库本身不保证行的物理存储顺序,你需要先指定排序规则来明确定义「第一条记录」,本方案默认以col1字段升序排序作为行的顺序,完全匹配你给出的示例数据效果。

1. 直接查询得到col2结果(通用,支持MySQL8.0+、PostgreSQL、SQL Server、Oracle等主流数据库)

使用LEAD窗口函数取当前行下一行的col1值作为col2,没有下一行时自动返回null:

SELECT 
  col1,
  LEAD(col1, 1) OVER (ORDER BY col1) AS col2
FROM 你的表名;

2. 直接更新表的col2字段

2.1 MySQL 8.0+ 版本写法

UPDATE 你的表名 t1
JOIN (
  SELECT 
    col1,
    LEAD(col1, 1) OVER (ORDER BY col1) AS new_col2
  FROM 你的表名
) t2 ON t1.col1 = t2.col1
SET t1.col2 = t2.new_col2;

2.2 不支持窗口函数的旧版MySQL写法

如果你的数据库版本不支持窗口函数,可以用自连接实现:

-- 查询用
SELECT 
  t1.col1,
  t2.col1 AS col2
FROM 你的表名 t1
LEFT JOIN 你的表名 t2 ON t2.col1 = t1.col1 + 1
ORDER BY t1.col1;

-- 更新用
UPDATE 你的表名 t1
LEFT JOIN 你的表名 t2 ON t2.col1 = t1.col1 + 1
SET t1.col2 = t2.col1;

内容的提问来源于stack exchange,提问作者Prabhakar Kumar Jha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:09:08