我在生产代码中看到了以下内容:
select max(col_val) from table_name where
--set of conditions here
--AND
rownum=1;
这对我来说很奇怪。上述代码是否会按预期目的执行?(从一组值中选择最大值)。这个选择总是不会返回一个从中选择col_val的记录吗?感谢。
答案 0 :(得分:3)
没有。保证获得一组值的最大值是保证的。它将仅返回第一个值,其中第一个值由执行计划驱动。根据计划,第一个值也可能是最大值,但这可能会改变,因为计划不是一成不变的。
SQL> create table t (i number);
Table created.
SQL> insert into t values (1);
1 row created.
SQL> insert into t values (2);
1 row created.
SQL> select i from t;
I
----------
1
2
SQL> select max(i) from t;
MAX(I)
----------
2
SQL> select max(i) from t where rownum = 1;
MAX(I)
----------
1
SQL>
答案 1 :(得分:0)
它将采用满足条件的第一行。这里的最大值似乎过剩了。