我需要获取字段的最大值,因此我在存储过程
中使用了此SQLSelect max(field_1) from mytable into :v_max1
但是,我还想获得另一个字段值与最大值,我可以写另一个SQL像这样
Select field_2 from mytable where field_1 = :v_max1 into v_field2
但我想问的是,是否有可能得到field_2值与第一个语句,所以我只使用单个语句?
此查询将返回field_1
等于MAX(field_1)
的所有记录
SELECT field_2 FROM mytable WHERE field_1 = (
SELECT MAX(field_1) FROM mytable)
你可以做这样的查询
SELECT FIRST 1 field_1, field_2
FROM yourtable
ORDER BY field_1 DESC;
如果我没记错的话,你应该按field_1
降序进行索引,以使其表现良好。
注意,如果max(value_1)不是唯一的,第二个查询可能会返回多行。这个查询将只返回一行。
我希望你正在计算最大值而不是在某些表中获得主键字段的下一个值?这是一个非常常见的错误,如果是这样,请考虑使用生成器(序列),因为MAX()在组织增量值序列方面效率不高。另外,请记住MAX()只能使用降序索引。
只是我的2美分:)
问候,Alexey KovyazinIBSurgeon