使用 max 获取另一个值

Get another value with max

我需要获取字段的最大值,所以我在存储过程中使用了这个 SQL

Select max(field_1) from mytable into :v_max1

但是我还想获得另一个具有该最大值的字段值,我可以这样写另一个 SQL

Select field_2 from mytable where field_1 = :v_max1 into v_field2

但我想问一下是否可以通过第一条语句获得 field_2 值,所以我只使用一条语句?

你可以这样查询

SELECT FIRST 1 field_1, field_2
  FROM yourtable
 ORDER BY field_1 DESC;

如果我没记错的话,你应该按 field_1 降序索引,这样才能表现良好。

请注意,如果 max(value_1) 不是唯一的,您的第二个查询可能 return 多行。此查询将 return 只有一行。

此查询将 return 所有 field_1 等于 MAX(field_1)

的记录
SELECT field_2 FROM mytable WHERE field_1 = (
    SELECT MAX(field_1) FROM mytable)

我希望您正在计算最大值而不是在某些 table 中获取主键字段的下一个值? 这是一个很常见的错误,如果是这样,请考虑改用生成器(序列),因为 MAX() 不能有效地组织递增的值序列。 另外,请记住 MAX() 只能使用降序索引。

只是我的 2 美分 :)

此致, 阿列克谢·科维亚津 IBSurgeon