HSQLDB -Query - 如果不存在,则插入第一条记录

时间:2017-02-09 15:22:48

标签: hsqldb informix

注意:此问题专门针对HSQLDB和Informix。

如果表中不存在,我想插入新条目,我知道我们可以使用存在查询根据现有条目插入。

例如:

INSERT INTO test(column1) 
(SELECT DISTINCT 3 
 FROM test  
 WHERE NOT EXISTS (SELECT * FROM test  WHERE column1 =3));

问题是:如果子查询返回至少一行,则EXISTS条件与子查询结合使用并被视为满足。然后我们只能在SELECT,INSERT,UPDATE或DELETE语句中使用。

1 个答案:

答案 0 :(得分:2)

这是CREATE表语句:

CREATE TABLE test(column1 int)

这是HSQLDB的INSERT语句。它使用SQL Standard语法,也应该与Informix一起使用:

INSERT INTO test(column1) 
    SELECT * FROM (VALUES (3)) 
    WHERE NOT EXISTS (SELECT * FROM test  WHERE column1 =3)

这是用于显示表中行的SELECT语句

SELECT * FROM test

这是SELECT

的结果
 COLUMN1 
 ------- 
 3       

 1 row(s) in 0 ms

由于Informix不支持VALUES表构造函数,因此需要创建一个只包含一行的单独表,类似于Oracle的DUAL表。然后在SELECT中使用该表。

INSERT INTO test(column1) 
    SELECT 3 FROM single_row_table 
    WHERE NOT EXISTS (SELECT * FROM test  WHERE column1 =3)