Функция Sql Max () при условии rownum - PullRequest
0 голосов
/ 25 мая 2010

Я видел что-то вроде следующего в нашем производственном коде:

select max(col_val) from table_name where 
--set of conditions here
--AND
rownum=1;

Это выглядело странно для меня.Будет ли приведенный выше код выполняться с намеченной целью? (Выбор максимального значения из набора значений).Не будет ли этот выбор всегда возвращать одну запись, из которой будет выбран col_val?Спасибо.

Ответы [ 2 ]

3 голосов
/ 26 мая 2010

Нет. Гарантируется получить максимум набора значений. Он вернет только первое значение, где первое значение определяется планом выполнения. В зависимости от плана, первое значение также может быть максимальным, но оно может измениться, поскольку планы не являются постоянными.

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> 
0 голосов
/ 25 мая 2010

это займет первый ряд, который удовлетворяет условиям. Макс, кажется, здесь лишний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...