mysql - 插入,如果它已经存在更新列 SQL

标签 mysql sql

INSERT INTO users (firstname, lastname, email, mobile) VALUES ('Karem', 'Parem', 'mail@mail.com', '123456789');

这是我想要做的,但是如果具有相同电子邮件 mail@mail.com 的行已经存在,那么它应该使用这些值更新该行。

我找到了 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html 但我不明白

最佳答案

使用 ALTER TABLEemail 列上添加一个唯一约束,然后尝试这个查询:

INSERT INTO users(firstname, lastname, email, mobile)
VALUES ('Karem', 'Parem', 'mail@mail.com', '123456789')
ON DUPLICATE KEY UPDATE
    firstname = 'Karem',
    lastname = 'Parem',
    email = 'mail@mail.com', -- you can probably omit this
    mobile = '123456789'

不过要小心 - 如果您在表上定义了任何其他唯一键(包括主键,根据定义是唯一的),那么它们也可以触发更新。

关于mysql - 插入,如果它已经存在更新列 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7888445/

相关文章:

mysql - 本地计算机上的 MySQL 服务启动然后停止错误

当 mysql 死机时,php 重新加载页面

mysql - 在没有相交sql查询的情况下获取共同ID

c# - 使用 sql 查询将值插入 sql 数据库

具有多个 ORDER BY 子句和 IF 条件的 Mysql 查询

MySQL:统一选择是否总是比单独的简单选择更快?

php - 在唯一键上使用空值执行 "INSERT...ON DUPLICATE KEY UPDATE"的变通解决方案

mysql - 如何在 MySQL 中的列的所有值上向左移动一个点 6 个空格?

.net - 从存储过程填充 DataGridView

php - 从ID指定的合并表中获取特定行数据