根据 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
- 职责:
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;
嘿,我想问一下 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 |
- 职责:
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;