Простое решение
blockquote>var tx = [{"id":1},{"id":2}]; var tx1 = [{"id":3},{"id":4}]; var txHistory = tx.concat(tx1) console.log(txHistory); // output // [{"id":1},{"id":2},{"id":3},{"id":4}];
(непротестированный) что-то вроде этого может сделать задание
WITH
base AS
(
select * -- get the table
from sometable
order by name -- in the desired order
),
twenty AS
(
select * -- get the first 30 rows
from base
where rownum < 30
order by name -- in the desired order
)
select * -- then get rows 21 .. 30
from twenty
where rownum > 20
order by name -- in the desired order
существует также разряд аналитической функции, который можно использовать для упорядочивания.
Можно использовать подзапрос для этого как
select *
from
( select *
from emp
order by sal desc )
where ROWNUM <= 5;
, Имеют также взгляд на тему На ROWNUM и ограничивающих результатах в Oracle/AskTom для получения дополнительной информации.
Обновление : Для ограничения результата и с вещами нижних и с верхних границ становятся более чрезмерно увеличенными в размерах с
select * from
( select a.*, ROWNUM rnum from
( <your_query_goes_here, with order by> ) a
where ROWNUM <= :MAX_ROW_TO_FETCH )
where rnum >= :MIN_ROW_TO_FETCH;
(Скопированный с указанной AskTom-статьи)
Обновление 2 : Запуск с Oracle 12c (12.1) существует синтаксис, доступный, чтобы ограничить строки или запуститься при смещениях.
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
См. этот ответ для большего количества примеров. Благодаря Krumia для подсказки.
Аналитическое решение только с одним вложенным запросом:
SELECT * FROM
(
SELECT t.*, Row_Number() OVER (ORDER BY name) MyRow FROM sometable t
)
WHERE MyRow BETWEEN 10 AND 20;
Rank()
мог быть заменен Row_Number()
, но мог бы возвратить больше записей, чем Вы ожидаете, существуют ли дублирующиеся значения для имени.