0

我正在尝试更新满足某些条件的记录,但我需要它是最后一个,我读过我应该使用 order by 和 limit。(我不想使用子查询首先获取满足条件的最后一条记录......我觉得不太酷,应该是更好的方法......)

我试过了:

UPDATE table_1
SET some_field= 'value'
FROM table_1 t1 
INNER JOIN table_2 t2 ON t1.field_1 = t2.field_1
WHERE t1.some_field = 'some_value' and t1.seome_other_field = 'some_other_value'
ORDER BY t1.some_field DESC limit 1

但我在关键字“ORDER”附近收到错误(156)语法错误

对于我在 Sybase 文档中可以看到的内容,我以正确的顺序使用关键字... http://infocenter.sybase.com/archive/index.jsp?topic=/com.sybase.infocenter.dc38151.1260/ html/iqref/Update.htm

我违反了一些规则吗?

我敢肯定是很明显的东西......但现在看不到它......

赛基 15.7.0.501.1011

4

1 回答 1

0

在不使用子查询或更改查询的情况下,您可以使用它set rowcount来限制更新次数:

set rowcount 1
go
UPDATE table_1
SET some_field= 'value'
FROM table_1 t1, table_2 t2 
WHERE t1.field_1 = t2.field_1
AND t1.some_field = 'some_value' and t1.seome_other_field = 'some_other_value'
ORDER BY t1.some_field DESC
go
set rowcount 0
go

这是一个会话级别设置,0是返回所有受影响行的默认值。

于 2013-11-14T14:12:30.643 回答