我正在使用以下查询将记录插入表中,只有它不存在:
INSERT INTO tblExample (exampleColumn)
SELECT 'test' FROM tblExample
WHERE NOT EXISTS (SELECT 1 FROM tblExample where exampleColumn = 'test');
只要表格中至少有1条记录,它就能正常工作。如果没有记录,则不会将记录插入表中。
任何人都可以看到我的查询有什么问题吗?
谢谢!
答案 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')