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

H2 SQL数据库-如果记录不存在,则插入

宗政坚白
2023-03-14
问题内容

我想初始化一个H2数据库,但是我不确定记录是否存在。如果它们不存在,我什么都不愿做,但是如果它们不存在,我想写默认值。

像这样的东西:

IF 'number of rows in ACCESSLEVELS' = 0
INSERT INTO ACCESSLEVELS VALUES
    (0, 'admin'),
    (1, 'SEO'),
    (2, 'sales director'),
    (3, 'manager'),
    (4, 'REP')
    ;

问题答案:

以下内容适用于MySQL,PostgreSQL和H2数据库:

drop table ACCESSLEVELS;

create table ACCESSLEVELS(id int, name varchar(255));

insert into ACCESSLEVELS select * from (
select 0, 'admin' union
select 1, 'SEO' union
select 2, 'sales director' union
select 3, 'manager' union
select 4, 'REP'
) x where not exists(select * from ACCESSLEVELS);


 类似资料:
  • 问题内容: 我正在尝试执行以下查询: 但这会返回错误。基本上,如果该记录的“名称”字段已经存在于另一条记录中,我不想插入一条记录-如何检查新名称是否唯一? 问题答案: 我实际上并不建议您这样做,因为Piskvor和其他人建议的索引是一种更好的方法,但是您实际上可以做您想做的事情: 插入一条记录: 尝试再次插入相同的记录: 插入其他记录: 等等… 更新: 为了防止在两个值相等的情况下出错,您必须命名

  • 问题内容: 我正在尝试在两个SQL Server 2008表之间移动一些数据。如果该记录存​​在于表2中,并且带有来自表1的电子邮件,则使用来自表1的数据更新该记录,否则插入新记录。 在表1中,我有许多列;名字,姓氏,电子邮件等。 我不确定如何构造查询以更新Table2(如果来自Table1的电子邮件存在)或插入新行(如果Table2中不存在来自Table1的电子邮件)。 我尝试在Google上进

  • 问题内容: 我有一个带有2个表的数据库,如下所示: 列是,并且是 和 在申请表中,我有2个编辑框,名称分别为和 如果用户像电子邮件一样插入一个新的负责人姓名, 那么在保存表格的过程中,我想将新的负责人姓名插入表中,请插入最后一个并将其更新为。 如果用户保持名称,但它更新电子邮件一样,然后我想在从1 =使用新的电子邮件地址和他们(其余和)保持不变。 如果负责人的名称相同,我想保留from表的原始引用

  • 问题内容: 我在使用SQL查询时遇到问题。如果同一行尚不存在,我需要插入一行。这是我到目前为止的内容: 我对sql不太熟悉,尤其是不存在的语法,因此在执行时会出现以下错误: ORA-06550:第37行,第11列:PLS-00103:在预期以下情况之一时遇到了符号“ INSERT”: 然后和或 用“ then”符号代替“ INSERT”继续。 following: the following: 问

  • 问题内容: 这个问题已经在这里有了答案 : 如何在MySQL中“如果不存在则插入”? (10个回答) 7年前关闭。 我有一个mysql表… 我只想添加不在列中的记录。 对于前 我有以下记录要添加到表中 我不想添加,因为它已经在列中。 那么,查询是否有可能先检查记录然后插入? 目前,我正在使用..首先,我先进行记录,然后对其进行匹配,然后再对其进行匹配。 但是,我只想处理一个查询。 问题答案: 您可

  • 我是postgreSQL的新手,我正在尝试创建一个模式文件,其中包含创建数据库和所需表所需的所有脚本。我过去为SQl服务器执行此操作的方式是检查数据库是否存在,然后运行必要的脚本。 postgreSQL中的以下脚本引发了一个错误:“无法从函数或多命令字符串执行创建数据库” 我通过导出数据库的备份创建了一个postgres数据库转储文件,但其中包含, 这意味着每次运行模式文件时,数据库都会被删除并重