当前位置: 首页 > 面试题库 >

SQLite INSERT-重复键更新(UPSERT)

姚高韵
2023-03-14
问题内容

MySQL有这样的东西:

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

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

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

问题答案:

由于3.24.0
SQLite还支持upsert
,因此现在您可以简单地编写以下内容

INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON CONFLICT(ip) DO UPDATE SET hits = hits + 1;


 类似资料:
  • 问题内容: MySQL有这样的东西: 据我所知,SQLite中不存在此功能,我想知道的是,是否有任何方法可以实现相同的效果而不必执行两个查询。另外,如果这不可能,那么您更喜欢什么: SELECT +(插入或更新) 或 UPDATE( 如果UPDATE失败,则 + INSERT ) 问题答案: 因为3.24.0 SQLite还支持upsert ,所以现在您可以简单地编写以下内容

  • 问题内容: 我正在执行插入查询,其中如果已经存在唯一键,则许多列中的大多数都需要更新为新值。它是这样的: 我不确定该子句的语法应该是什么。如何从子句引用当前行? 问题答案: MySQL将假定等号之前的部分引用INSERT INTO子句中命名的列,而第二部分引用SELECT列。

  • 要将记录或到联机数据库,需要使用这个php脚本(谢谢@Sloan Thrasher,@lovepreet-singh)。 但我在浏览器中得到了以下SQL Echo。在这种情况下,联机数据库不会更新或插入新记录。

  • 问题内容: 我有一个脚本,可捕获推文并将其放入数据库中。我将在cronjob上运行脚本,然后从数据库中在我的网站上显示推文,以防止达到twitter API的限制。 所以我不想在我的数据库中有重复的tweet,我知道我可以使用’INSERT … ON DUPLICATE KEY UPDATE’来实现,但是我不太了解如何使用它。 我的数据库结构如下。 表格-哈希ID(auto_increment)鸣

  • 我有一个静态结构的对象: 我想按键更新它的属性。例如,如果我收到 然后我想更新对象,并有: 我该怎么办?我试图创建一个新对象,类似这样: 我不知道如何从变量中设置键和值的名称

  • 好的,所以我不确定这是否可能,但我需要更改一个表中的主键值,以匹配另一个表中的FK值。 我创建了一个表-POS_Transactions(FK REGISTER)并导入了它的值,然后创建了另一个表-Registers(pk Registers key)并导入了它的值。但是当我导入寄存器的值时,我遇到了一些问题,必须清除表并再次尝试多次(这就是为什么数字是从15到22的原因,它只是以这种方式自动更新