2014-10-31 70 views
1

此查询在mysql中运行良好,但无法在mssql中运行。为什么?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'. 
+12

为什么在UPDATE语句中需要命令?删除订单.. – 2014-10-31 14:38:48

+1

单个评论(Mihai lorga)解决了一个问题。 – Alternatex 2014-10-31 14:39:35

+0

哦,很酷,我使用vtiger,并试图将其移植到MSSQL谢谢 – 2014-10-31 14:41:15

回答

2

你只需要删除ORDER子句。 ORDER在UPDATE语句中毫无意义。

UPDATE cvcolumnlist 
    SET columnindex=columnindex+1 
    WHERE cvid=40 AND columnindex>=3 
1
UPDATE cvcolumnlist 
SET columnindex = columnindex+1 
WHERE cvid = 40 
    AND columnindex > 2 

这应该工作

1

你并不需要在所有的ORDER BY子句。这只是当从数据库中获取数据时。

您可能需要注意,尽管SQL是具有指定结构的语言,但不同的SQL引擎可能会以不同的方式解析查询,并使用不同的语法,因为很多SQL功能并未由该语言定义。

例如在mysql中,您可以使用LIMIT关键字来限制返回的记录数,并且您可以使用mssql ROWNUMBER和oracle使用ROWNUM系统。

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