此查询在mysql中运行良好,但无法在mssql中运行。为什么呢?
不要评判我,我是mssql的新手。
UPDATE cvcolumnlist
SET columnindex=columnindex+1
WHERE cvid=40 AND columnindex>=3
ORDER BY columnindex DESC
错误:
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'order'.
答案 0 :(得分:2)
您只需删除ORDER子句即可。 ORDER在UPDATE语句中毫无意义。
UPDATE cvcolumnlist
SET columnindex=columnindex+1
WHERE cvid=40 AND columnindex>=3
答案 1 :(得分:1)
UPDATE cvcolumnlist
SET columnindex = columnindex+1
WHERE cvid = 40
AND columnindex > 2
这应该有效
答案 2 :(得分:1)
您根本不需要ORDER BY子句。这只是在SELECT
来自数据库的数据时。
您可能需要注意,即使SQL是具有指定结构的语言,不同的SQL引擎也可能以不同的方式解析查询并使用不同的语法,因为语言没有定义很多SQL功能。
例如在mysql中,您可以使用LIMIT
关键字来限制返回的记录数,在mssql中,您可以使用ROWNUMBER
,oracle使用ROWNUM
系统。
答案 3 :(得分:1)
UPDATE [cvcolumnlist]
SET [columnindex] = [columnindex] + 1
WHERE [cvid] = 40 AND [columnindex] >= 3
我不确定这是否适用。我的大多数查询都使用这样的东西。
UPDATE [database].[dbo].[cvcolumnlist]
SET [columnindex] = [columnindex] + 1
WHERE [cvid] = 40 AND [columnindex] >= 3