我正在尝试更新满足某些条件的记录,但我需要它是最后一个,我读过我应该使用订单和限制。 (我不想使用子查询来首先获取满足条件的最后一个记录...我感觉很酷,应该是更好的方法......)
我试过了:
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
答案 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
是返回所有受影响行的默认值。