Sql 使用max获取另一个值
我需要获取字段的最大值,所以我在存储过程中使用了此SQLSql 使用max获取另一个值,sql,firebird,greatest-n-per-group,Sql,Firebird,Greatest N Per Group,我需要获取字段的最大值,所以我在存储过程中使用了此SQL Select max(field_1) from mytable into :v_max1 然而,我还想得到另一个具有该最大值的字段值,我可以像这样编写另一个SQL Select field_2 from mytable where field_1 = :v_max1 into v_field2 SELECT FIRST 1 field_1, field_2 FROM yourtable ORDER BY field_1 DES
Select max(field_1) from mytable into :v_max1
然而,我还想得到另一个具有该最大值的字段值,我可以像这样编写另一个SQL
Select field_2 from mytable where field_1 = :v_max1 into v_field2
SELECT FIRST 1 field_1, field_2
FROM yourtable
ORDER BY field_1 DESC;
但是我想问的是,有没有可能通过第一条语句获得字段_2的值,所以我只使用一条语句?您可以这样进行查询
Select field_2 from mytable where field_1 = :v_max1 into v_field2
SELECT FIRST 1 field_1, field_2
FROM yourtable
ORDER BY field_1 DESC;
如果我记得很清楚的话,你应该按照字段_1
的降序进行索引,这样它才能表现良好
请注意,如果max(值_1)不是唯一的,则第二个查询可能返回多行。此查询将只返回一行。您可以执行如下查询
Select field_2 from mytable where field_1 = :v_max1 into v_field2
SELECT FIRST 1 field_1, field_2
FROM yourtable
ORDER BY field_1 DESC;
如果我记得很清楚的话,你应该按照字段_1
的降序进行索引,这样它才能表现良好
请注意,如果max(值_1)不是唯一的,则第二个查询可能返回多行。此查询将只返回一行。此查询将返回其
字段\u 1
等于最大值(字段\u 1)
此查询将返回其
field_1
等于MAX(field_1)
我希望您是在计算最大值,而不是为了得到某个表中主键字段的下一个值? 这是一个非常常见的错误,如果是这样,考虑使用生成器(序列),因为Max()不能有效地组织增量值序列。 另外,请记住MAX()只能使用降序索引 就我的2美分:) 问候,, 阿列克谢·科维亚津
IBP我希望您计算的是最大值,而不是某个表中主键字段的下一个值? 这是一个非常常见的错误,如果是这样,考虑使用生成器(序列),因为Max()不能有效地组织增量值序列。 另外,请记住MAX()只能使用降序索引 就我的2美分:) 问候,, 阿列克谢·科维亚津 IB外科医师