Как правильно выбрать только количество строк между Oracle 11.g? - PullRequest
0 голосов
/ 27 января 2020

На данный момент это код, который я использую:

SELECT *
FROM (
  SELECT product.*, rownum AS n
  FROM product
) WHERE n >= 4 AND n < 4+2;

Это выбирает 2 строки из табличного продукта, начиная считать номер строки 4 (в комплекте).

И это работает отлично, НО окончательный выбор также покажет столбец для rownum. Единственный обходной путь, который у меня есть на данный момент, - это вручную ввести нужные столбцы в главном Select, но что если я не знаю имен и количества столбцов? Есть ли лучший способ сделать это? Большое спасибо

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Мне интересно, что вы не используете ни одного условия ORDER BY. Без использования ORDER BY строки предложения могут быть возвращены в любом порядке. Так что в основном ваш запрос похож на -

SELECT product.*
FROM product
WHERE rownum <= 3;
0 голосов
/ 27 января 2020

Если вы не хотите писать все имена столбцов, вам нужно снова объединить запрос с вашим table, используя PK. (Поскольку я не думаю, что в oracle 11g есть другой способ исключить rn из конечного результата, кроме записи всех имен столбцов вручную)

SELECT T.* FROM
(SELECT PK_COLUMN
FROM (
  SELECT product.PK_COLUMN, rownum AS n
  FROM product
) WHERE n >= 4 AND n < 4+2) P
JOIN T ON T.PK_COLUMN = P.PK_COLUMN

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...