所以我有以下示例查询
INSERT INTO company (name)
SELECT 'test'
FROM company
WHERE
NOT EXISTS (SELECT 'test' FROM company WHERE name = 'test');
但是,当表为空时,这将不起作用.
我以为这样的事情会起作用
INSERT INTO company (name)
SELECT 'test'
FROM company
WHERE
(SELECT COUNT(*) FROM company) = 0
OR
NOT EXISTS (SELECT 'test' FROM company WHERE name = 'test');
但这也不起作用.有任何想法吗?
http://sqlfiddle.com/#!9/5747f0/1
解决方法:
仔细查看以下查询:
INSERT INTO company (name)
SELECT 'test'
FROM company
WHERE
NOT EXISTS (SELECT 'test' FROM company WHERE name = 'test');
由于company表当前为空,因此无论WHERE EXISTS逻辑如何(完全正确),都不会从该查询返回任何记录.如果改用对偶表,您将看到查询正常工作:
INSERT INTO company (name)
SELECT 'test'
FROM dual
WHERE
NOT EXISTS (SELECT 'test' FROM company WHERE name = 'test');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。