INSERT INTO ... FROM SELECT ... 返回 id 映射

postgresql

1个回答

写回答

阿sir别吃了

2025-07-10 06:42

+ 关注

使用INSERT INTO ... FROM SELECT ... 语句可以将一个表中的数据插入到另一个表中,并且可以返回插入的每行数据的id映射关系。这种语句结合了INSERT INTO和SELECT语句的功能,可以实现数据的快速插入和映射关系的返回。

INSERT INTO ... FROM SELECT ... 语句的语法如下:

sql

INSERT INTO table2 (column1, column2, column3, ...)

SELECT column1, column2, column3, ...

FROM table1

WHERE condition;

在这个语法中,table2是要插入数据的目标表,column1, column2, column3, ...是目标表中的列名,table1是源表,SELECT语句用于选择要插入的数据,WHERE子句是可选的,用于筛选源表中的数据。

在执行INSERT INTO ... FROM SELECT ... 语句时,系统会自动为目标表中每一行插入一个唯一的id,并返回这些id与源表中对应行的映射关系。可以使用INSERT ... RETURNING id语句来获取这些id。

下面我们来看一个具体的案例,通过一个示例代码来演示INSERT INTO ... FROM SELECT ... 语句的用法和返回id映射的操作。

示例代码:

假设我们有两个表,一个是学生表(students),包含id、name和age字段;另一个是成绩表(scores),包含id、student_id和score字段。现在我们想将学生表中的数据插入到成绩表中,并返回插入的每行数据的id映射关系。

首先,我们创建学生表和成绩表,并插入一些数据:

sql

CREATE TABLE students (

id SERIAL PRIMARY KEY,

name VARCHAR(50),

age INT

);

CREATE TABLE scores (

id SERIAL PRIMARY KEY,

student_id INT,

score INT

);

INSERT INTO students (name, age)

VALUES ('张三', 18),

('李四', 19),

('王五', 20);

然后,我们使用INSERT INTO ... FROM SELECT ... 语句将学生表中的数据插入到成绩表中,并返回插入的每行数据的id映射关系:

sql

INSERT INTO scores (student_id, score)

SELECT id, 90

FROM students

RETURNING id, student_id;

执行以上代码后,系统会将学生表中的数据插入到成绩表中,并返回插入的每行数据的id映射关系。我们可以通过返回的结果来查看这些映射关系。

通过使用INSERT INTO ... FROM SELECT ... 语句,我们可以将一个表中的数据插入到另一个表中,并且可以返回插入的每行数据的id映射关系。这种语句的用法简单灵活,适用于各种数据插入和映射操作的场景。在实际的应用开发中,我们可以根据具体的需求使用这个语句来实现数据的快速插入和映射关系的返回。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号