mysql - INSERT 或 UPDATE 不是 mysql 中的主列

标签 mysql insert

我有一个包含以下列的表格

id -> VARCHAR (PRIMARY KEY)
data -> TEXT
user_id -> VARCHAR

如果行不存在,我想插入到这个表中。否则更新 data 列并保持其他一切不变。目前我正在做这个

REPLACE INTO collat​​e(id,user_id,data)VALUE('$id','$user_id','$data')。但这会删除一行(如果找到)然后再次插入。服务器密集型

最佳答案

根据 REPLACE Syntax 记录:

REPLACE is a MySQL extension to the SQL standard. It either inserts, or deletes and inserts. For another MySQL extension to standard SQL—that either inserts or updates—see Section 13.2.5.3, “INSERT ... ON DUPLICATE KEY UPDATE Syntax”.

因此:

INSERT INTO collate
  (id, user_id, data)
VALUES
  ('$id','$user_id','$data')
ON DUPLICATE KEY UPDATE
  data = VALUES(data)

关于mysql - INSERT 或 UPDATE 不是 mysql 中的主列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292867/

相关文章:

mysql - 从三个表中选择并汇总数据

mysql - 混合 LEFT JOIN 结果 MySQL Doctrine

mysql - 基于文本的主索引有哪些缺点

mysql - 在 MySQL 服务启动时运行 SQL 查询

mysql - mysql如何自动插入数据到外键?

php - 这个查询Mysql有什么问题。?

c# - 返回从存储过程插入的记录数的可靠方法是什么

mysql - 如何使用 MySQL Workbench 查找字符串中多次出现的子字符串?

php - 排列 JOIN 数据库结果

mysql - 在 Wordpress usermeta 表中批量插入 SQL