MySQL插入不存在/如果不存在
Posted
技术标签:
【中文标题】MySQL插入不存在/如果不存在【英文标题】:MySQL insert where not exists / if not exists 【发布时间】:2012-11-19 23:00:46 【问题描述】:我尝试了以下查询:
INSERT INTO `surfed_site` (user, site)
VALUES ('123', '456')
WHERE NOT EXISTS (SELECT site FROM `surfed_site` WHERE site=456)
但我不断收到 mysql 错误:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“WHERE NOT EXISTS (SELECT site FROM surfed_site
WHERE site=456)”附近使用正确的语法
我不知道我做错了什么,有人可以指导我吗?
【问题讨论】:
这能回答你的问题吗? How to 'insert if not exists' in MySQL? 【参考方案1】:INSERT
statements support two1 syntaxes: one that uses VALUES
, and one that uses a query.不能组合,只有查询语法支持WHERE
子句。所以:
INSERT INTO `surfed_site` (user, site)
SELECT '123', '456' FROM (SELECT 1) t
WHERE NOT EXISTS (SELECT site FROM `surfed_site` WHERE site=456)
-
其实三种语法;你也可以使用
SET
。如果您只插入一条记录,则这条记录在功能上等同于 VALUES
,但可以说更具可读性。
【讨论】:
这似乎对我不起作用,我收到错误消息 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“WHERE NOT EXISTS (SELECT site FROMsurfed_site
WHERE site=456)”附近使用正确的语法
@LiamGordon:哦,对不起。我已经编辑了我的答案,以便希望给出一个固定版本——未经测试。 (抱歉,如果没有其他问题,我应该表明我没有测试我发布的内容。)以上是关于MySQL插入不存在/如果不存在的主要内容,如果未能解决你的问题,请参考以下文章