Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 rownum in Oracle vs Db2  [new]
gelort
Member

Откуда:
Сообщений: 38
Привет всем!
Есть аналог rownum в DB2 rownum, что бы можно выполнить такой запрос "select * from table_1 where rownum < 10" как в Oracle
22 май 06, 17:54    [2692805]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
в LUW нету - точно.
22 май 06, 17:58    [2692821]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
gelort
Member

Откуда:
Сообщений: 38
Почему именно в LUW, если другая платформа то все круто? Или я чего то не понимаю в этом db2?
22 май 06, 18:09    [2692859]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4949
DB2 for LUW:

1.
select *
from
(
select rownumber() over() rn, t.*
from table_1 t
) t
where rn<10;

2.
select * 
from table_1 
fetch first 9 rows only;

DB2 for iSeries:
select *
from table_1 t
where rrn(t)<10;
22 май 06, 18:17    [2692901]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
В z/OS есть, но смысл там не такой как в оракле.
22 май 06, 18:24    [2692930]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
gelort
Member

Откуда:
Сообщений: 38
Спасибо за помощь! Вот никак не могу я обуздать Db2, с другими базами как то полегче... :) Еще раз спасибо за ответы!!!!
22 май 06, 18:27    [2692946]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
New Guest
Guest
You can use FETCH FIRST 10 ROWS ONLY - it works for LUW and z/OS

LUW
http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/admin/r0000875.htm

z/OS http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/topic/com.ibm.db2.doc.sqlref/bjnrmstr351.htm?resultof=%22%46%45%54%43%48%22%20%22%66%65%74%63%68%22%20%22%46%49%52%53%54%22%20%22%66%69%72%73%74%22%20
22 май 06, 20:04    [2693242]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
riman
Member

Откуда:
Сообщений: 2234
Mark Barinstein

DB2 for iSeries:
select *
from table_1 t
where rrn(t)<10;


По-моему, этот запрос выдаст совсем не то что ожидает автор топика?
23 май 06, 08:24    [2693828]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4949
riman
По-моему, этот запрос выдаст совсем не то что ожидает автор топика?


Да, согласен.
В iSeries то, что выдает rrn(), не всегда нумеруется строго последовательно.
При удалениях из таблицы могут встречаться дыры в нумерации.
Я, к сожалению, не знаком с функцией rownum.
Я правильно понимаю, что эта функция выдает некий внутренний номер строки в таблице, причем строки там всегда нумеруются с 1 без пропусков?
23 май 06, 09:36    [2693957]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Nikolay Kulikov
Member

Откуда: Москва
Сообщений: 607
А если поискать по этому форуму можно найти примера на С функции counter() или ctr() которые работают через scratchpad и если они работают в unfenced режиме то производительность чуть-ли не на порядок выше чем rownumber() over() rn
23 май 06, 10:12    [2694111]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
Mark Barinstein
функцией rownum.
Я правильно понимаю, что эта функция выдает некий внутренний номер строки в таблице, причем строки там всегда нумеруются с 1 без пропусков?

да, это псевдостолбец. Тупо номерует строки в селекте.
23 май 06, 19:35    [2698134]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Nikolay Kulikov
Member

Откуда: Москва
Сообщений: 607
Ищите по форуму.
24 май 06, 10:15    [2699136]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
lazy-beaver
Member

Откуда: donetsk, UA
Сообщений: 186
Mark Barinstein
riman
По-моему, этот запрос выдаст совсем не то что ожидает автор топика?


Да, согласен.
В iSeries то, что выдает rrn(), не всегда нумеруется строго последовательно.
При удалениях из таблицы могут встречаться дыры в нумерации.
Я, к сожалению, не знаком с функцией rownum.
Я правильно понимаю, что эта функция выдает некий внутренний номер строки в таблице, причем строки там всегда нумеруются с 1 без пропусков?


кроме того, если у файла атрибут REUSEDLT(*YES) - то вновь вставленная строка получит rrn уже удаленной -)

Serge Reva
24 май 06, 10:41    [2699288]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
RRN() на AS/400 - это аналог оракловского ROWID за тем исключением, что поиск по нему не работает так быстро, как можно было бы ожидать. Даёт фул скан :(
Может пофиксят ещё в будующих версиях - ведь что может быть проще, чем вытащить строку, если известен её адрес.

--
Антон
Per rectum ad astrum
24 май 06, 20:38    [2702867]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
>> Даёт фул скан
Было б удивительно если было б по-другому...
25 май 06, 10:08    [2703850]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
gardenman
>> Даёт фул скан
Было б удивительно если было б по-другому...

благодарю за удовольствие удивить тебя - в Оракле - по другому.
Для Оракла это самый быстрый метод доступа (по ROWID)
25 май 06, 20:29    [2707568]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
ппм
Guest
дык как-бы немного разные платформы...
Самое чуть-чуть...
25 май 06, 21:04    [2707658]     Ответить | Цитировать Сообщить модератору
 Re: rownum in Oracle vs Db2  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
ппм
дык как-бы немного разные платформы...
Самое чуть-чуть...

Разные принципы:
У Оракла - ROWID (полный адрес строки в виде object#|file#|block#|slot#)
У DB2 - помножим номер строки на фиксированную длину строки и получим необходимое смещение.
25 май 06, 21:25    [2707726]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить