Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Как полчить последнюю запись?[new]  [new]
rtt
Guest
Таблица
1 | a
2 | b
3 | c
4 | d

Как написать запрос, возращающий 4-ю строку?
29 окт 03, 10:46    [397328]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
Temka
Member

Откуда:
Сообщений: 31
select * from table where col1=4
29 окт 03, 10:50    [397342]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
Нет, вы меня не поняли!
Как получить последнюю запись, не зная данных и их количества (не вычисляя), не применяя сортировку!?
Есть ли специальный метод?
29 окт 03, 10:53    [397348]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
akim
Member

Откуда:
Сообщений: 57
select a.* from (select rownum rnum,tabl_name.* from tabl_name) a where rnum=(select count(1) from tabl_name)
29 окт 03, 10:56    [397354]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
Я ищу простой способ!
Такие навороты, могу в нескольких экземплярах представить!
Хотя, спасибо!
29 окт 03, 11:01    [397366]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
Angel
Member

Откуда:
Сообщений: 189
> Нет, вы меня не поняли!
> Как получить последнюю запись, не зная данных и их количества (не вычисляя), не применяя сортировку!?

Что такое последняя запись ?
29 окт 03, 11:09    [397379]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
Последняя запись в любой выборке!
29 окт 03, 11:12    [397387]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
Энгри Эдгар
Guest
Можно так извратиться :)
SELECT UNIQUE LAST_VALUE(col1) OVER () FROM TABLE;
29 окт 03, 11:12    [397388]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
akim
Member

Откуда:
Сообщений: 57
2Энри Эдгар
Все же были предупреждены, чтобы без наворотов:)
29 окт 03, 11:15    [397394]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
to Энгри Эдгар

Это зверь, возращает список записей!
29 окт 03, 11:17    [397404]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
И вообще не понятно, что делает этот запрос! Просветите!
29 окт 03, 11:21    [397414]     Ответить | Цитировать Сообщить модератору
 Тут без полстакана не разберёшь!  [new]
Энгри Эдгар
Guest
Поищите в форуме темы, связанные с аналитическими функциями. В частности, ссылку на статью Владимира Пржиялковского. Или почитайте родную документацию Oracle.

Вкратце, этот SELECT (без UNIQUE) берёт набор из всех записей таблицы и на каждую строку набора выдаёт значение последнего элемента указанного столбца (col1).
29 окт 03, 11:28    [397433]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
Splain
Member

Откуда: Череповец
Сообщений: 924
Исходя из плана выполнения запроса вроде бы вот так:

select * from table where rowid =
(select max(rowid) from table)

лучше.

В любом случае любой способ - либо по индексам сканировать, либо полный scan таблицы :(

Правда иногда исходя из особенностей хранения данных удается обойтись без сканирования. Например, у меня на всех проверенных таблицах такой вот запрос -
select * from table where rowid =
(select rowid from table where rownum < 2)
дает первую запись в таблице.
Вполне возможно, если сделать сортировку у индекса Primary Key не ASC, а DESC, этот запрос начнет возвращать последнюю запись.
29 окт 03, 11:45    [397489]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
DBGroup Consulting
Member

Откуда: http://dbgroup.ru
Сообщений: 711
rtt

Как написать запрос, возращающий 4-ю строку?

Как получить последнюю запись, не зная данных и их количества (не вычисляя), не применяя сортировку!?

Задача в такой постановке не имеет смысла. Без упорядочивания, явного или неявного, бессмысленна фраза последняя запись.

В общем случае Oracle не гарантирует порядок выдачи строк в результирующей выборке без order by. На это очень много чего влияет: статистика, наличие индексов, возможность параллельной обработки и т.д. и т.п.

Успехов,
DBGroup Consulting
29 окт 03, 11:58    [397531]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
to DBGroup Consulting

Спасибо за просвещение!
Задача имеет смысл (набор будет упорядочен). Я имел ввиду, что бы запрос не был перегружен.
29 окт 03, 12:08    [397569]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
Mergen
Member

Откуда:
Сообщений: 473
Вариант с использованием хинта INDEX_DESC выглядит предпочтительней по производительности.
29 окт 03, 12:12    [397578]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
lh2
Guest
перевод на русский язык:

"Решите мне задачу."
...
"Аким, какой же ты тупой, не ужели не понимаешь, мне нужен др. вариант. Хотя, с паршивой овцы хоть шерсти клок, и за то спасибо"
...
"Эдгард!, что за фигня у меня вылазит после твоего запросы?! Что ты мне подсунул?!
И вообще разжуй, что написал"
...
Всем, спасибо, так уж и быть.
А задача кот. я поставил корректная, это вы козлы не врубились, что же мне надо,"
29 окт 03, 15:46    [398253]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
alienzzzz
Member

Откуда: Москва
Сообщений: 223
автор писал:
А задача кот. я поставил корректная, это вы козлы не врубились, что же мне надо,"

Непонял, нас что послали ?
AlienZzzz
29 окт 03, 16:24    [398368]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
hl2
Guest
2 alienzzzz
Не воспринимай близко к сердцу, это мой вольный психологический перевод, слов автора данной темы. Ведь я мог и ошибиться :)

А мог и в точку попасть. Как по ощущениям?
29 окт 03, 18:50    [398757]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
rtt
Guest
Я думал здесь форум по Oracle, не какой-то базарчик с обидчевымими бабушками!
Спасибо, за помощь!
30 окт 03, 03:18    [398908]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
hl2
Guest
Я думал здесь форум по Oracle, не какой-то базарчик с обидчевымими бабушками!

А кто видел здесь обиженных?
Просто небольшие наблюдения, в части того как на "форум по Oracle" заскочили с "базарчика"
30 окт 03, 09:12    [399034]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Тут без полстакана не разберёшь!  [new]
DenDY
Member

Откуда:
Сообщений: 358
Энгри Эдгар
Поищите в форуме темы, связанные с аналитическими функциями. В частности, ссылку на статью Владимира Пржиялковского. Или почитайте родную документацию Oracle.

Вкратце, этот SELECT (без UNIQUE) берёт набор из всех записей таблицы и на каждую строку набора выдаёт значение последнего элемента указанного столбца (col1).


Подскажите плиз, а как теперь получить одну то запись а не все то есть не 150 штук например а только одну?
15 ноя 05, 08:40    [2068331]     Ответить | Цитировать Сообщить модератору
 Re: Тут без полстакана не разберёшь!  [new]
Elic
Member

Откуда:
Сообщений: 29990
DenDY
Подскажите плиз, а как теперь получить одну то запись а не все то есть не 150 штук например а только одну?
RTFM FIRST, LAST (FAQ)[/quot]
15 ноя 05, 09:40    [2068497]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
aZm
Member

Откуда: 3й рим
Сообщений: 2355
я б написал на вскидку так :)

select distinct
       last_value(t1) over (order by t1 range between unbounded preceding and unbounded following) lastt1,
       last_value(t2) over (order by t1 range between unbounded preceding and unbounded following) lastt2, 
       last_value(t3) over (order by t1 range between unbounded preceding and unbounded following) lastt3
from (
select 1 as t1,1 as t2,1 as t3 from dual
union all
select 2 as t1,2 as t2,2 as t3 from dual
union all
select 3 as t1,3 as t2,3 as t3 from dual)

---
Vae victis!
15 ноя 05, 09:50    [2068552]     Ответить | Цитировать Сообщить модератору
 Re: Как полчить последнюю запись?[new]  [new]
Stax.
Guest
rtt
Таблица
1 | a
2 | b
3 | c
4 | d
Как написать запрос, возращающий 4-ю строку?

1)Есть ли индекс по первому полю?
2)первое поле not null?

.......
Stax
15 ноя 05, 10:36    [2068850]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Oracle Ответить