MySQL插入不存在/如果不存在

时间:2012-11-19 23:00:46

标签: mysql insert

我尝试了以下查询:

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)”附近使用正确的语法

我不知道我做错了什么,有人能指导我吗?

1 个答案:

答案 0 :(得分:0)

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)

  1. 实际上三个语法;你也可以使用SET。如果您只插入一条记录,则此记录在功能上等同于VALUES,但可以说更具可读性。