微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql-在空表上不存在插入选择

所以我有以下示例查询

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] 举报,一经查实,本站将立刻删除。

相关推荐