SQL Server 执行update语句出错,求大神

一直用的是Oracle数据库,今天学习一下SQLserver的语法,在两个数据库执行相同效果的一个update语句,不知道为什么SQLserver总是说有错误,我的sql... 一直用的是Oracle数据库,今天学习一下SQL server的语法,在两个数据库执行相同效果的一个update语句,不知道为什么SQL server总是说有错误,
我的sql server 版本是:Microsoft SQL Server 2008 (SP1) ,我不知道是不是版本的问题,因为只是这么简单的一个update语句折腾,真是无语

UPDATE Mychu_Schema.HAND_STUDENT hs
SET hs.student_age = hs.student_age + 1
FROM Mychu_Schema.HAND_STUDENT_CORE hsc
WHERE hsc.student_no = hs.student_no
AND hsc.course_no = 'c011'

出现错误'hs' 附近有语法错误。
Oracle语法:
UPDATE hand_student hs
SET hs.student_age = hs.student_age + 1
WHERE hs.student_no IN (SELECT hsc.student_no
FROM hand_student_core hsc
WHERE hsc.student_no = hs.student_no
AND hsc.course_no = 'c011')
展开
 我来答
哎呀……18a91a6
2017-07-23 · TA获得超过4.2万个赞
知道大有可为答主
回答量:7246
采纳率:76%
帮助的人:3062万
展开全部

正确写法如下:

UPDATE  hs
SET hs.student_age = hs.student_age + 1
FROM Mychu_Schema.HAND_STUDENT hs,Mychu_Schema.HAND_STUDENT_CORE hsc
WHERE hsc.student_no = hs.student_no
  AND hsc.course_no = 'c011'

也可以用类Oralce的写法:

UPDATE hs
SET hs.student_age = hs.student_age + 1
FROM hand_student hs --注意这里
WHERE hs.student_no IN (SELECT hsc.student_no
FROM hand_student_core hsc
WHERE hsc.student_no = hs.student_no
AND hsc.course_no = 'c011')

重要差异在于 update 后面的数据库名不能直接指定别名,只能在 from 后指定。

追问

正确答案可能你都不相信,我不清楚Microsoft这么做的原因,这帮大牛们为什么要修改标准的SQL语法,没有系统的学过SQL Server对这样的做法,您有什么见解,或者知道它的原理。给个评论。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式