Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用max获取另一个值_Sql_Firebird_Greatest N Per Group - Fatal编程技术网

Sql 使用max获取另一个值

Sql 使用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

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