【问题标题】:MySQL: Update duplicate records with incremental columnMySQL:使用增量列更新重复记录
【发布时间】:2023-02-17 20:25:22
【问题描述】:

- 创造

CREATE TABLE employee 
(
  emp_id INTEGER,
  job_code TEXT,
  cnt_check int
);

- 插入

INSERT INTO employee(emp_id,job_code) VALUES (0001, 'JC001');
INSERT INTO employee(emp_id,job_code) VALUES (0001, 'JC001');
INSERT INTO employee(emp_id,job_code) VALUES (0002, 'JC002');
INSERT INTO employee(emp_id,job_code) VALUES (0002, 'JC002');
INSERT INTO employee(emp_id,job_code) VALUES (0003, 'JC003');
INSERT INTO employee(emp_id,job_code) VALUES (0004, 'JC004');
INSERT INTO employee(emp_id,job_code) VALUES (0004, 'JC004');
INSERT INTO employee(emp_id,job_code) VALUES (0004, 'JC004');

预期产出:

emp_id  job_code  cnt_check
--------------------------------
0001    JC001       1
0001    JC001       2
0002    JC002       1
0002    JC002       2
0003    JC003       1
0004    JC004       1
0004    JC004       2
0004    JC004       3

我的尝试:

update tbl_student t1
join 
(
select usn,applicationid,row_number() over(partition by usn,applicationid) rnk
from tbl_student
) t2 
on t1.usn = t2.usn and t1.applicationid = t2.applicationid
set t1.no_pay = t2.rnk;

但是所有记录都更新为值 1。

Demo Link

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    使用示例数据中的确切列,我们可以尝试:

    SELECT emp_id, job_code,
           ROW_NUMBER() OVER (PARTITION BY emp_id ORDER BY emp_id) AS cnt_check
    FROM employee
    ORDER BY 1, 3;
    

    【讨论】:

      猜你喜欢
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2012-07-08
      • 1970-01-01
      相关资源
      最近更新 更多