Эквиваленты TOP SQL Server

Вы можете придерживаться более старого изображения, например docker:18.06.2-dind. В качестве альтернативы возьмите вверх по течению Dockerfile и отредактируйте альпийскую версию по своему вкусу. Нет гарантии, что сборка будет работать, но стоит попробовать.

В долгосрочной перспективе вы, вероятно, захотите обновить ваши зависимости до версий, совместимых с более поздними версиями Node.

14
задан Justin Ethier 6 May 2009 в 13:37
поделиться

9 ответов

Для выбора первых 100 строк:

MySQL и PostgreSQL :

SELECT  *
FROM    Table
ORDER BY
        column
LIMIT 100

Oracle :

SELECT  *
FROM    (
        SELECT  t.*
        FROM    table
        ORDER BY
                column
        )
WHERE   rownum <= 100

Примечание. что вам нужен подзапрос здесь. Если вы не добавите подзапрос, ROWNUM выберет сначала 10 строк в случайном порядке, а затем отсортирует их по столбцу .

Чтобы выбрать строки между 100 и 300 :

MySQL :

SELECT  *
FROM    TABLE
ORDER BY
        column
LIMIT   100, 200

PostgreSQL :

SELECT  *
FROM    Table
ORDER BY
        column
OFFSET 100 LIMIT 200

Oracle :

SELECT  *
FROM    (
        SELECT  t.*, ROW_NUMBER() OVER (ORER BY column) AS rn
        FROM    table
        )
WHERE   rn >= 100
        AND rownum <= 200

Обратите внимание, что попытка упростить его с ROWNUM BETWEEN 100 И 200 (в отличие от rn BETWEEN 100 И 200 во внешнем запросе) ничего не вернет в Oracle !

RN BETWEEN 100 AND 200 будет работать и в Oracle , но менее эффективно.

Подробнее о производительности см. В статье в моем блоге:

20
ответ дан 1 December 2019 в 07:41
поделиться

Для Postgres и MySQL это ключевое слово LIMIT.

SELECT *
  FROM users
 ORDER BY id
 LIMIT 100;
6
ответ дан 1 December 2019 в 07:41
поделиться

Это стандартный SQL (Oracle и SQL Server реализуют его). Это пример возврата до 100 строк:

        SELECT ID_CONTROL FROM (SELECT ROW_NUMBER() OVER (ORDER BY ID_CONTROL) 
        ROWNUMBER, ID_CONTROL FROM IWS_CONTROL WHERE 
        CURRENT_STATE = 15 AND CURRENT_STATUS=0) A WHERE ROWNUMBER <= 100)
3
ответ дан 1 December 2019 в 07:41
поделиться

В SQL Anywhere он аналогичен SQL Server:

SELECT TOP 100 * FROM users ORDER BY id

Вы можете даже начать с середины результирующего набора, если хотите:

SELECT TOP 100 START AT 50 * FROM users ORDER BY id

получает от 50-й до 150-й строк набор результатов.

2
ответ дан 1 December 2019 в 07:41
поделиться
LIMIT 100

как в

SELECT * FROM foo ORDER BY bar LIMIT 100
1
ответ дан 1 December 2019 в 07:41
поделиться

Oracle:

select * from (select * from foo ORDER BY bar) where rownum < 100

С хорошим объяснением того, как заставить его работать, в AskTom .

В Ingres тот же запрос будет:

select First 100 * from foo ORDER BY bar

Вопрос Ingres уже был дан ответ в StackOverflow ранее.

1
ответ дан 1 December 2019 в 07:41
поделиться

Вы можете использовать RANK () и DENSE_RANK () в Oracle. Здесь - ссылка на веб-сайт AskTom, объясняющий, как выполнять разбиение на страницы и топ-n запросов с DENSE_RANK в Oracle.

1
ответ дан 1 December 2019 в 07:41
поделиться

В DB2 ваш запрос будет выглядеть следующим образом:

SELECT * FROM tblData FETCH FIRST 10 ROWS ONLY ;

1
ответ дан 1 December 2019 в 07:41
поделиться

В Oracle вы хотите использовать запрос TOP-N.

Например:

select  *
  from  (SELECT  *
           FROM  foo
          where  foo_id=[number]
       order by  foo_id desc)
 where  rownum <= 3

Это даст вам три первых результата (потому что я заказываю по desc в подзапросе)

0
ответ дан 1 December 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: