使用WHERE条件执行INSERT语句报错,求指定行插入数据的正确SQL写法
SQL语法错误修正与需求实现
问题根源
你写的SQL语句逻辑混淆了:INSERT是用来新增整条记录的,不能直接用WHERE指定要修改的行。你实际需求是更新已有行的指定列值,得用UPDATE语句,这才是报错的核心原因。
错误代码示例
insert into dbo.Repository(STATE_CODE,ZIPCODE) values('SA','560064'), WHERE JOBDIVA_ID = '23-00871';
系统报错信息
Msg 156, Level 15, State 1, Line 3
关键字 'WHERE' 附近有语法错误。
满足需求的正确SQL
场景1:更新已有行的列值
如果你要针对JOBDIVA_ID = '23-00871'的行,修改STATE_CODE和ZIPCODE的值,使用UPDATE语句:
UPDATE dbo.Repository SET STATE_CODE = 'SA', ZIPCODE = '560064' WHERE JOBDIVA_ID = '23-00871';
场景2:插入符合条件的新行
如果是要插入一条新行,同时需要满足某些前置条件(比如关联其他表的数据),可以用INSERT...SELECT的写法:
INSERT INTO dbo.Repository(STATE_CODE, ZIPCODE, JOBDIVA_ID) SELECT 'SA', '560064', '23-00871' -- 可添加筛选条件,比如仅当关联表存在特定数据时插入 WHERE EXISTS (SELECT 1 FROM 关联表 WHERE 关联字段 = '目标值');
内容的提问来源于stack exchange,提问作者Sagar Sunar
相关产品推荐
相关产品推荐

