You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

这条INSERT INTO SQL语句存在什么语法错误?报错‘from关键字附近语法不正确’

SQL语句报错分析:Incorrect syntax near the keyword 'from'

错误SQL语句

insert into Transaction_Details (Trans_Date, Trans_Type)
values (GetDate(), 'WITHDRWAL')
from Transaction_Details t 
inner join Acc_Details a on t.UserID = a.UderId
where a.Card_No = '1234567890123456';

涉及表结构

Transaction_Details表

Trans_ID int PRIMARY KEY IDENTITY(1,1),
Trans_Date datetime,
Trans_Type varchar(20),
UserID int foreign key references User_Details(UserID),
Card_Id varchar(16) foreign key references User_Card_Details,
Acc_No int foreign key references Acc_Details(Acc_No)

Acc_Details表

Acc_Id int,
Acc_No int PRIMARY KEY,
Card_No varchar(16)  foreign key references User_Card_Details(Card_No),
UserId int foreign key references User_Details(UserID),
Balance int,
BankName varchar(15)

报错信息

Incorrect syntax near the keyword 'from'

错误分析及修正建议

  • 核心语法错误:INSERT语句同时混用了VALUES子句和FROM子句,这违反SQL语法规范。INSERT仅支持两种合法写法:要么用VALUES直接插入常量值,要么用INSERT...SELECT从查询结果提取数据插入,两者不能同时使用。你的需求是基于Acc_Details的查询结果插入数据,应采用INSERT...SELECT写法,删除VALUES部分。
  • 拼写错误:
    • 交易类型值'WITHDRWAL'拼写错误,正确应为'WITHDRAWAL'(缺少字母A)。
    • 连接条件中的a.UderId拼写错误,对应Acc_Details表的字段是UserId,需改为a.UserId。
  • 必填字段缺失:Transaction_Details表中的UserID、Card_Id、Acc_No是外键字段且未设置允许为空,原语句仅插入Trans_Date和Trans_Type,即便修复语法也会因字段缺失报错,需补充这些字段的取值。

修正后的示例SQL

insert into Transaction_Details (Trans_Date, Trans_Type, UserID, Card_Id, Acc_No)
select GetDate(), 'WITHDRAWAL', a.UserId, a.Card_No, a.Acc_No
from Acc_Details a 
where a.Card_No = '1234567890123456';

(注:移除了与Transaction_Details的关联,因为插入新交易无需关联已有交易记录,直接从Acc_Details获取用户、卡号、账户信息即可)

内容的提问来源于stack exchange,提问作者Varun Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:15:40