1. 基本批量插入
INSERT INTO table_name (column1, column2)
VALUES
('value1_1', 'value1_2'),
('value2_1', 'value2_2'),
('value3_1', 'value3_2');
2. 批量插入并更新(Upsert)
- 这个语法表示如果
column1
是唯一键或主键,当插入操作遇到重复值时,会更新 column2
的值。
INSERT INTO table_name (column1, column2)
VALUES
('value1_1', 'value1_2'),
('value2_1', 'value2_2'),
('value3_1', 'value3_2')
ON DUPLICATE KEY UPDATE
column2 = VALUES(column2);
3. 批量插入忽略已存在的数据
- 当遇到重复键时,
INSERT IGNORE
会跳过该行的插入操作,而不会抛出错误。
INSERT IGNORE INTO table_name (column1, column2)
VALUES
('value1_1', 'value1_2'),
('value2_1', 'value2_2'),
('value3_1', 'value3_2');
4. 替换插入(Replace)
REPLACE INTO
会尝试插入新行。如果发现已有行与新行冲突(基于主键或唯一键),则先删除旧行,然后插入新行。
REPLACE INTO table_name (column1, column2)
VALUES
('value1_1', 'value1_2'),
('value2_1', 'value2_2'),
('value3_1', 'value3_2');
5.从一个表中选择数据并插入到另一个表中
插入 table2 中满足某个条件的行
INSERT INTO table1 (column1, column2)
SELECT column1, column2
FROM table2
WHERE column3 = 'some_value';#插入并更新(Upsert)
INSERT INTO table1 (column1, column2)
SELECT column1, column2
FROM table2
ON DUPLICATE KEY UPDATE
table1.column2 = VALUES(column2);#插入并忽略已存在的数据
INSERT INTO table1 (column1, column2)
SELECT column1, column2
FROM table2
ON DUPLICATE KEY UPDATE
table1.column2 = VALUES(column2);#插入并替换
REPLACE INTO table1 (column1, column2)
SELECT column1, column2
FROM table2;