mysql - 如果特定列值不同则更新行,否则插入新行

标签 mysql sql database upsert

我有一张 table

UserId    Name    Age
1         Lisha   23
2         Ankur   21
3         Karan   22

对于特定的给定 UserId,如果给定年龄与当前年龄不同,我想更新年龄。否则,如果 UserId 不存在,我想插入一个新行。

如何在单个 SQL 语句中执行此操作。

最佳答案

MySQL 有一个简洁的语法可以做到这一点,尽管它以相反的方式进行 - 你定义你想要插入的内容,如果生成重复键错误,你定义你想要更新的方式数据代替:

INSERT INTO users
(userid, age)
ON DUPLICATE KEY UPDATE age = VALUES(age)

关于mysql - 如果特定列值不同则更新行,否则插入新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201936/

相关文章:

php - 使用 MySQL 中的值运行 jQuery Counter

C#/微软 SQL Server 2012 : Unicode symbols not displaying correctly (•)

ruby-on-rails - 在不更新数据库的情况下显示 rails 中挂起的迁移生成的 SQL

mysql - 建表时出错-mysql

c - 在没有表模式的情况下将 CSV 导入 SQLite

ruby-on-rails - Active Record - 获取数据库中的第二个,第三个......项目(没有ID)

html - 将查询保留在搜索栏中,但使用占位符作为初始默认值

MySQL 1044 (42000) : Access denied for user ' ' @'localhost' to database 'mysql' with Mac

java - 无法在 Spring Boot 2.3.3 中构建镜像

MySQL:我无法执行脚本