如果存在则插入仅在表中有记录时才有效

时间:2016-04-18 09:06:00

标签: sql database jdbc derby

我正在使用以下查询将记录插入表中,只有它不存在:

INSERT INTO tblExample (exampleColumn)
  SELECT 'test' FROM tblExample
  WHERE NOT EXISTS (SELECT 1 FROM tblExample where exampleColumn = 'test'); 

只要表格中至少有1条记录,它就能正常工作。如果没有记录,则不会将记录插入表中。

任何人都可以看到我的查询有什么问题吗?

谢谢!

5 个答案:

答案 0 :(得分:1)

使用Derby 10.12进行测试

INSERT INTO tblExample (exampleColumn)
SELECT *
from (values ('test')) as x(col)
WHERE NOT EXISTS (SELECT 1 
                  FROM tblExample t
                  where t.exampleColumn = x.col); 

答案 1 :(得分:0)

试试这个,

INSERT INTO tblExample (exampleColumn)
SELECT  Value FROM (  SELECT 'test' Value) T1
  WHERE NOT EXISTS (SELECT 1 FROM tblExample where exampleColumn = 'test')

或者你可以使用这个

INSERT INTO tblExample (exampleColumn)
SELECT  Value FROM (  SELECT 'test' Value) T1
    LEFT JOIN tblExample ON exampleColumn = Value
WHERE exampleColumn IS NULL

答案 2 :(得分:0)

查询是:

INSERT INTO user (id, name, date)
SELECT 23,test,DATE('2013-02-12')
FROM  contact
WHERE NOT EXISTS ( SELECT 1 FROM user WHERE id = 23 )

答案 3 :(得分:0)

感谢您的帮助。我发现添加记录的最佳方法(即使表中没有记录)是使用以下语句:

INSERT INTO tblExample(exampleColumn) 
(SELECT 'test' FROM tblExample WHERE exampleColumn='test' HAVING COUNT(*)=0);

答案 4 :(得分:-1)

您的第一个查询" SELECT' test' FROM tblExample" 如果表中没有记录,将返回0行。

使用以下代码。

IF NOT EXISTS(SELECT * FROM tblExample where exampleColumn='test')
    insert into tblExample(exampleColumn) values  ('test')