1

我尝试了以下查询:

INSERT INTO `surfed_site` (user, site)
VALUES ('123', '456')
WHERE NOT EXISTS (SELECT site FROM `surfed_site` WHERE site=456)

但我不断收到 MySQL 错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以surfed_site在第 3 行的“WHERE NOT EXISTS (SELECT site FROM WHERE site=456)”附近使用正确的语法

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

4

1 回答 1

1

INSERT语句支持两种1语法:一种使用VALUES,另一种使用查询。你不能组合它们,只有查询语法支持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,但可以说更具可读性。
于 2012-11-19T23:02:22.150 回答