SQLite 插入 - 重复键更新 (UPSERT)

标签 sql mysql database sqlite upsert

MySQL 有这样的东西:

INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON DUPLICATE KEY UPDATE hits = hits + 1;

据我所知 SQLite 中不存在此功能,我想知道是否有任何方法可以实现相同的效果而无需执行两个查询。另外,如果这不可能,你更喜欢什么:

  1. SELECT +(插入或更新)
  2. 更新(+ INSERT 如果更新失败)

最佳答案

INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;

这要求“ip”列具有唯一(或主键)约束。


编辑:另一个很好的解决方案:https://stackoverflow.com/a/4330694/89771 .

关于SQLite 插入 - 重复键更新 (UPSERT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717590/

相关文章:

mysql sql查询以避免日期总和中的周末

sql - 在一个语句中从序列中查询多个 NEXTVAL

mysql - LOAD DATA INFILE 仅插入 1 条记录

php - 将 mysql 结果加载到 php 变量中

database - 带有标签的用户数据库

database - 启发式在文本文件中查找主键

sql - 查询分组

ubuntu-14.04 - MySQL 转储在 mysql 存储库上工作,但在 ubuntu 存储库中损坏

database - 如何有效地保存每个实体的用户状态?

sql - Oracle——优化SQL查询