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

env*_*yM6 0 sql-server

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

这就是我目前拥有的:

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

但我收到错误"关键字附近的语法不正确WHERE".我在这做错了什么?

Hog*_*gan 5

TL; DR:

INSERT当您要在表中创建新记录时使用.您似乎并不想添加新记录.如果要修改现有记录,请UPDATE改用:

UPDATE ADDRESSES
  SET AddressLine1 = '1A', AddressLine2 = '2B', PostCode = '3C'
 WHERE USID = 49;
Run Code Online (Sandbox Code Playgroud)

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

WHERE子句的目的是排除除满足指定条件的行之外的所有行.在INSERT-ing时,根本不需要查看任何现有行; 您想要创建行,这些行完全独立于任何现有记录.因此INSERT不需要WHERE条款.事实上,它不允许它,因为它根本没有任何意义.

随着UPDATE,在另一方面,WHERE条款是有道理的,因为你是在处理与现有行,你可能不希望更改所有现有行,但只有一个子集.该WHERE子句允许您定义将要更新的行的子集.