我需要获取字段的最大值,所以我在存储过程中使用了这个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值,所以我只使用单个语句?
答案 0 :(得分:4)
此查询将返回field_1
等于MAX(field_1)
SELECT field_2 FROM mytable WHERE field_1 = (
SELECT MAX(field_1) FROM mytable)
答案 1 :(得分:2)
你可以这样做一个查询
SELECT FIRST 1 field_1, field_2
FROM yourtable
ORDER BY field_1 DESC;
如果我记得很清楚,你应该按降序排列field_1
,以便它能够很好地运作。
请注意,如果max(value_1)不唯一,则第二个查询可能会返回多行。此查询将只返回一行。
答案 2 :(得分:1)
我希望你计算最大值不是为了获得某些表中主键字段的下一个值? 这是非常常见的错误,如果是这样,请考虑使用生成器(序列),因为MAX()不能有效地组织增量值序列。 另外,请记住MAX()只能使用降序索引。
我的2美分:)
此致 Alexey Kovyazin IBSurgeon