Объединение двух запросов с первым набором результатов запроса, получающим первые десять строк в Oracle

#sql #oracle #oracle10g #union #rownum

#sql #Oracle #oracle10g #объединение #rownum

Вопрос:

Я хочу объединение двух запросов с первым набором результатов запроса, получающим первые десять строк в Oracle. Пример: Например, если в первом запросе 10 строк, а максимальное число строк равно 10.Я хочу, чтобы число строк второго запроса начиналось с 11 в результате объединения.

Комментарии:

1. Другими словами, вы хотите убедиться, что первые десять строк объединенного набора результатов получены из подзапроса, который находится в левой части UNION?

2. rownum — это псевдоколонка, выбранные строки зависят от вашего порядка (order by), а не от указания … и rownum <= 10… когда вы говорите «Я хочу, чтобы число строк второго запроса начиналось с 11», это бессмысленно для данных в таблице, так же как сказать «Я хочу, чтобы число строк второго запроса начиналось со 158» … Порядок здесь важен… Пожалуйста, опубликуйте пример таблицы (или таблиц?) вы ссылаетесь на ожидаемый результат.

Ответ №1:

 SELECT  *
FROM    (
        SELECT  *
        FROM    table1
        ORDER BY
                col1
        )
WHERE   rownum <= 10
UNION ALL
SELECT  *
FROM    (
        SELECT  *, rownum AS rn
        FROM    (
                SELECT  *
                FROM    table2
                ORDER BY
                        col2
                )
        )
WHERE   rn > 10
  

Комментарии:

1. Что можно сделать, если количество строк в первом запросе не является фиксированным? Используем ли мы max??