INSERT语句在WHERE关键字附近具有不正确的语法。为什么?

时间:2014-12-16 20:39:04

标签: sql-server

所有记录WHERE USID = 49的更新声明是什么?

这就是我目前所拥有的:

INSERT INTO ADDRESSES (AddressLine1, AddressLine2, PostCode) 
VALUES ('1A','2B', '3C') WHERE USID = 49;

但我在关键字WHERE附近收到错误"语法错误。" 我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

<强> TL; DR:

如果要在表格中创建新记录,则使用

INSERT。您似乎并不想添加新记录。如果您要修改现有记录,请改为使用UPDATE

UPDATE ADDRESSES
  SET AddressLine1 = '1A', AddressLine2 = '2B', PostCode = '3C'
 WHERE USID = 49;

解释为什么INSERT … WHERE语法无效:

WHERE子句的目的是排除所有符合指定条件的行。当INSERT时,根本不需要查看任何现有行;您想要创建 new 行,这些行完全独立于任何现有记录。因此INSERT不需要WHERE子句。事实上,它不允许它,因为它根本没有任何意义。

另一方面,对于UPDATEWHERE子句是有意义的,因为您正在处理现有行,并且您可能不想更改所有现有行,但只是一个子集。 WHERE子句允许您定义将要更新的行的子集。