当前位置: 首页 > 知识库问答 >
问题:

SQLite CASE语句-INSERT IF Not EXISTS[重复]

萧飞
2023-03-14

我正在使用SQLite数据库。

我想插入id值或url值,如果id值不存在,但不支持if()函数,我应该如何用SQL CASE语句编写它?

require 'sqlite3'
$db.execute("
IF NOT EXISTS(select * from table WHERE id='123456')
BEGIN
INSERT INTO sap(id,url) VALUES('123456', 'https:/test.com');
END;")

任何帮助都将不胜感激,

谢谢

共有1个答案

祁建业
2023-03-14

一种方法是将其编写为单个语句:

INSERT INTO sap(id, url)
    SELECT id, url 
    FROM (SELECT '123456' as id, 'https:/test.com' as url) t
    WHERE NOT EXISTS (SELECT 1 FROM sap WHERE sap.id = t.id);

然而,正确的答案是使用唯一的索引/约束,以便数据库在内部进行检查:

CREATE UNIQUE INDEX unq_sap_id ON sap(id);

如果您尝试为id插入重复值,INSERT将失败。

 类似资料:
  • 我浏览了java源代码,ArrayList.java- 在发布这个问题之前,我在这个网站上看了看,没有发现任何有帮助的东西。我还查看了< code>return()的文档,但是没有成功。也许我找错了东西。 不管怎样,那个返回语句在做什么?

  • 我正在学习一门在线编码课程,该课程导入了appstore上应用程序的大量数据,并要求我们计算出游戏或社交网络应用程序的平均评分。执行此操作时,我意外地键入了if语句,如上图所示: 这是我不明白的,总共有7197个应用程序,如果我使用上面的if语句,我的games\u social\u评级列表的长度是7197。游戏应用程序总数为3862,社交网络应用程序总数为167。7197是从哪里来的?当我输入上

  • 我所说的“空if语句”是指这样的东西(注意分号): 我在考虑这个应用程序时遇到了麻烦。使用time循环,您可以这样做: 但对于if语句没有这样的应用。此外,Java编译器在遇到此类语句时不会发出错误或警告。这可能会导致大而无声的问题,尤其是对于冗长而复杂的语句: 我的问题是:为什么Java中允许这样做?更重要的是,我是否可以启用一个选项,以便在发生这种情况时引发警告? (之前有人问过关于C#的这个

  • 我一直得到一个丢失的返回语句错误,但我不知道在哪里。每次跟随代码,我都感觉到至少有一个if语句提供了return语句。 代码:

  • 两者之间有实际区别吗 和 除了第一个更短之外,一个优先级更高,还是更慢? 编辑: 我意识到这可能并不清楚,但通常是。

  • 我有以下代码 null 我错过了什么?

  • 我有一个脚本需要在一个语句中插入多个内容,比如 长sql是基于条件串联的,并且需要这么长。在phpmyadmin中使用这种sql语句是有效的,并且插入它没有问题,但是JAVA会吐出一个错误。 我可以做些什么来插入这种sql,或者我应该重做我的代码来启动几次以达到相同的结果吗?

  • 问题内容: 当我的SQL语句中只有一个内部联接时,它可以很好地工作。我尝试加入第二张表,现在出现一个错误,提示存在语法错误(缺少运算符)。这是怎么了 问题答案: 对于多表联接,您必须将多余的联接嵌套在方括号中: 基本上,对于除第一个表之外的所有其他表,都需要在原始“ FROM”表之前加上一个括号,并在匹配的JOIN“ on”子句上使用一个结束括号。