2
我有兩個這樣設計的表。參考其他表的SQL重複行
CREATE TABLE employee
(
id INT PRIMARY KEY,
name VARCHAR(200)
);
CREATE TABLE job
(
id INT PRIMARY KEY,
name VARCHAR(200),
emp_id INT,
FOREIGN KEY (emp_id) REFERENCES employee(id)
);
insert into employee (id, name) values (1, 'user1');
insert into employee (id, name) values (2, 'user2');
insert into employee (id, name) values (3, 'user3');
insert into job (id, name, emp_id) values (1, 'job1', 1);
insert into job (id, name, emp_id) values (2, 'job2', 2);
insert into job (id, name, emp_id) values (3, 'job3', 3);
insert into job (id, name, emp_id) values (4, 'job3', 3);
而我需要的是 查詢 複製user1,2,3爲4,5,6,但同時,老的工作1,2,3,4的被引用用戶1,2,3將被複製爲作業5,6,7,8,新用戶4,5,6將參考新的5,6,7,8。
所以查詢前的結果。
Job Table:
id name emp_id
1 t_job1 1
2 t_job2 2
3 t_job3 3
4 t_job3 3
Employee table:
id name
1 user1
2 user2
3 user3
運行復制user1,2,3查詢後:
Job Table:
id name emp_id
1 t_job1 1
2 t_job2 2
3 t_job3 3
4 t_job3 3
5 t_job1 4
6 t_job2 5
7 t_job3 6
8 t_job3 6
Employee table:
id name
1 user1
2 user2
3 user3
4 user1
5 user2
6 user3
這是一個理想的情況下,但我們真正的工作的代碼,有工作和僱員之間的關係不確定的量。
那麼如何實現查詢? 首先,我不能改變表格結構,如果可以的話,我會的。
附上鍊接: http://sqlfiddle.com/#!9/de15f/1
我們使用的是Oracle,但我是把MySQL下的示例。
爲什麼所有的db平臺標籤?問題不清楚。解決方案可能因平臺而異。 – OldProgrammer
刪除不相關的平臺。 –
也許在這裏做出更清晰的結果。 –