使用 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
我需要获取字段的最大值,所以我在存储过程中使用了这个 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