Sybase仅更新满足条件的最后一条记录

时间:2013-11-14 03:57:59

标签: sql sql-update sql-order-by inner-join sybase

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

我试过了:

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

我是否打破了一些规则?

我确定这是非常明显的......但是现在看不到它......

Sybase 15.7.0.501.1011

1 个答案:

答案 0 :(得分: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是返回所有受影响行的默认值。