根据 java MYSQL 中 table 的列合并两个 table

Merge two table based on column on the table in java MYSQL

嘿,我想问一下 java 和 MYSQL 的问题。

例如我有 2 个 tables 是部门和职责:

1.Department:

Dept_id exp_id
dept_1 exp_1
dept_2 exp_1
dept_1 exp_2
dept_2 exp_2
  1. 职责:
Duty_id exp_id
duty_1 exp_1
duty_2 exp_1
duty_3 exp_1
duty_4 exp_2
duty_5 exp_2
duty_6 exp_2
duty_7 exp_2

我需要合并这两个 table,不要重复并平均分配。之后,我需要将数据插入到名为 result 的新 table 中。这两个table的外键是exp_id.

结果table:

Duty_id Dept_id
duty_1 dept_1
duty_2 dept_2
duty_3 dept_1
duty_4 dept_1
duty_5 dept_2
duty_6 dept_1
duty_7 dept_2

猜测,结果 table 已经使用适当的数据类型创建。您需要使用一些 SQL 查询,如下所示:

INSERT INTO RESULT(Duty_id, Dept_id)
SELECT duty.Duty_id, dept.Dept_id FROM Department dept, Duty duty where dept.exp_id=duty.exp_id;

Row_number 项在 exp_id 内并匹配位置

select du.duty_id, dp.Dept_id
from (
   select Dept_id, exp_id, row_number() over(partition by exp_id order by Dept_id) rn , count(Dept_id) over(partition by exp_id ) cnt
   from Department
   ) dp
join (
   select Duty_id, exp_id,  row_number() over(partition by exp_id order by Duty_id) rn
   from Duty
   ) du 
   on dp.exp_id = du.exp_id and (du.rn - 1) % dp.cnt  + 1 = dp.rn
order by du.duty_id;

db<>fiddle