rownum

barbie334
Дата: 21.10.2015 10:08:54
Можно ли применять rownum, когда мне нужно вывести не просто 10 первых записей из таблицы, а по 10 записей, удовлетворяющих определенному критерию? Например, вывести по 10 клиентов, которых в город Москва, и 10 клиентов, у которых Питер.
Если не rownum, то что использовать?
barbie334
Дата: 21.10.2015 10:22:03
Пока единственное предположение это писать отдельный sql для каждого параметра, выводить rownum, делать union all и выбирать из этой большой таблицы все записи, с rownum<10. В моем случае я еще могу так сделать, у меня всего 4 критерия, но что делать, когда их много больше?
Пыщ-пыщ мобайл
Дата: 21.10.2015 10:23:11
barbie334,

В факе посмотри - возврат части отсортированной выборки.
ten
Дата: 21.10.2015 10:23:19
barbie334,
select * from (select * from table where <условия>) where rownum <= 10;
ArtNick
Дата: 21.10.2015 10:27:28
barbie334,
with t as
(select  'Moscow' city from dual connect by level<100
 union all
 select 'Spb' city from dual connect by level<100)
select *
 from
  (select row_number() over (partition by city order by city) x, city
    from t)
 where x<11
AlexFF__|
Дата: 21.10.2015 10:35:01
barbie334
Пока единственное предположение это писать отдельный sql для каждого параметра, выводить rownum, делать union all и выбирать из этой большой таблицы все записи, с rownum<10...

Если есть быстрый доступ к данными типа индексов, то твой union all вполне подходит.
Не забудь, с увеличением у меня всего 4 критерия полное сканирование таблицы становится все более привлекательным.
Потести.