在数据库操作中,选择数据并将其插入到同一数据库中的另一个表是一个常见的任务。不同的数据库管理系统(DBMS)可能有略微不同的语法,但大多数都支持使用 INSERT INTO ... SELECT
语句来完成这一操作。
以下是一些常见的数据库管理系统(如 MySQL、PostgreSQL 和 SQLite)的示例,展示如何从一个表中选择数据并插入到另一个表中。
假设你有两个表 source_table
和 destination_table
,它们的结构如下:
-- source_table
CREATE TABLE source_table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
-- destination_table
CREATE TABLE destination_table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
);
你可以使用以下 SQL 语句从 source_table
中选择数据并插入到 destination_table
中:
INSERT INTO destination_table (id, name, age)
SELECT id, name, age
FROM source_table
WHERE age > 30; -- 你可以根据需要添加条件
在 PostgreSQL 中,语法与 MySQL 类似:
-- source_table
CREATE TABLE source_table (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INT
);
-- destination_table
CREATE TABLE destination_table (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
age INT
);
INSERT INTO destination_table (id, name, age)
SELECT id, name, age
FROM source_table
WHERE age > 30; -- 你可以根据需要添加条件
在 SQLite 中,语法也是类似的:
-- source_table
CREATE TABLE source_table (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
-- destination_table
CREATE TABLE destination_table (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
INSERT INTO destination_table (id, name, age)
SELECT id, name, age
FROM source_table
WHERE age > 30; -- 你可以根据需要添加条件
source_table
和 destination_table
。这两个表的结构相同,但你可以根据需要调整它们的结构。INSERT INTO ... SELECT
语句从 source_table
中选择数据并插入到 destination_table
中。你可以在 SELECT
语句中添加条件(如 WHERE age > 30
)来过滤数据。SELECT
语句中选择的列与 INSERT INTO
语句中指定的列匹配。ON DUPLICATE KEY UPDATE
(MySQL)或 ON CONFLICT
(PostgreSQL)等语法来处理冲突。云+社区技术沙龙[第17期]
云+社区沙龙online第6期[开源之道]
DB TALK 技术分享会
DBTalk技术分享会
DB TALK 技术分享会
DBTalk技术分享会
DBTalk
云+社区技术沙龙[第20期]
领取专属 10元无门槛券
手把手带您无忧上云