⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL MERGE UPSERT 操作

SQL MERGE(UPSERT/INSERT OR UPDATE):MERGE INTO target USING source ON condition WHEN MATCHED THEN UPDATE WHEN NOT MATCHED THEN INSERT、不同数据库实现差异(MySQL INSERT...ON DUPLICATE KEY)、PostgreSQL INSERT...ON C · 难度:入门 · +10XP

SQL UPSERT —— 存在则更新,不存在则插入

UPSERT(UPDATE + INSERT)是最常见的数据库操作之一。不同数据库有不同的实现方式。

MySQL

INSERT INTO users (id, name, email)
VALUES (1, '小明', 'xiaoming@example.com')
ON DUPLICATE KEY UPDATE name=VALUES(name), email=VALUES(email);

PostgreSQL / SQLite

INSERT INTO users (id, name, email)
VALUES (1, '小明', 'xiaoming@example.com')
ON CONFLICT (id) DO UPDATE SET name=EXCLUDED.name, email=EXCLUDED.email;

SQL Server / Oracle

MERGE INTO users AS target
USING (VALUES (1, '小明', 'xiaoming@example.com')) AS source(id, name, email)
ON target.id = source.id
WHEN MATCHED THEN UPDATE SET name=source.name, email=source.email
WHEN NOT MATCHED THEN INSERT (id, name, email) VALUES (source.id, source.name, source.email);

动手练习

  1. 基础练习:实现一个用户登录日志——同一天同用户多条记录则更新最后登录时间。
  2. 进阶应用:用UPSERT实现批量导入——新数据插入,已有数据更新。
  3. 项目实战:把项目中的先SELECT再判断INSERT/UPDATE的逻辑改为UPSERT。
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0