如何通过 pl/sql 复制行?
How to duplicate rows via pl/sql?
从 table 复制行并插入到相同的 table 并更改某些值的最佳方法是什么。假设我有一个如下所示的 table。我想 select 2021 年的所有行并插入相同的 table 并将年份切换到 2022 年。
需要用 pl/sql.
来做到这一点
id | projects | year | employeeID
1 | chandra | 2019 | 7
2 | alphaone | 2020 | 2
3 | madinc | 2021 | 3
4 | runa | 2021 | 1
INSERT
可以与 SELECT
查询组合。
例如:
insert into t (id, projects, year)
select id, projects, 2022
from t
where year = 2021
我认为id是连续的
所以一个简单的 INSERT INTO SELECT 就足够了
如果项目每年只存在一次,则不需要 econf DISTINCT 子选择
CREATE TABLE table1 (
"id" SERIAL,
"projects" VARCHAR(8),
"year" INTEGER,
"employeeID" INTEGER
);
INSERT INTO table1
("id", "projects", "year","employeeID")
VALUES
('1', 'chandra', '2019',7),
('2', 'alphaone', '2020',4),
('3', 'madinc', '2021',2),
('4', 'runa', '2021',1);
✓
4 行受影响
INSERT INTO table1 ("projects", "year","employeeID") SELECT "projects",'2022',"employeeID" FROM (SELECT DISTINCT "projects","employeeID" FROM table1 WHERE "year" = 2021) t1
2 行受影响
SELECt * FROM table1
id | projects | year | employeeID
-: | :------- | ---: | ---------:
1 | chandra | 2019 | 7
2 | alphaone | 2020 | 4
3 | madinc | 2021 | 2
4 | runa | 2021 | 1
1 | madinc | 2022 | 2
2 | runa | 2022 | 1
db<>fiddle here
从 table 复制行并插入到相同的 table 并更改某些值的最佳方法是什么。假设我有一个如下所示的 table。我想 select 2021 年的所有行并插入相同的 table 并将年份切换到 2022 年。 需要用 pl/sql.
来做到这一点
id | projects | year | employeeID
1 | chandra | 2019 | 7
2 | alphaone | 2020 | 2
3 | madinc | 2021 | 3
4 | runa | 2021 | 1
INSERT
可以与 SELECT
查询组合。
例如:
insert into t (id, projects, year)
select id, projects, 2022
from t
where year = 2021
我认为id是连续的
所以一个简单的 INSERT INTO SELECT 就足够了
如果项目每年只存在一次,则不需要 econf DISTINCT 子选择
CREATE TABLE table1 ( "id" SERIAL, "projects" VARCHAR(8), "year" INTEGER, "employeeID" INTEGER ); INSERT INTO table1 ("id", "projects", "year","employeeID") VALUES ('1', 'chandra', '2019',7), ('2', 'alphaone', '2020',4), ('3', 'madinc', '2021',2), ('4', 'runa', '2021',1);
✓
4 行受影响
INSERT INTO table1 ("projects", "year","employeeID") SELECT "projects",'2022',"employeeID" FROM (SELECT DISTINCT "projects","employeeID" FROM table1 WHERE "year" = 2021) t1
2 行受影响
SELECt * FROM table1
id | projects | year | employeeID -: | :------- | ---: | ---------: 1 | chandra | 2019 | 7 2 | alphaone | 2020 | 4 3 | madinc | 2021 | 2 4 | runa | 2021 | 1 1 | madinc | 2022 | 2 2 | runa | 2022 | 1
db<>fiddle here