SQL запрос дополнительно выбрать 20 товаров с нулевыми остатками

Есть таблица products и есть запрос select * from products where quantity > 0 . Нужно дополнительно еще выбрать 20 записей где quantity = 0 . Можно это как-то сделать не используя union?


Ответы (1 шт):

Автор решения: 0xdb

Так и укажите в условии выборки, то что надо ещё 20 записей:

select id, qty
from  (
    select id, qty, row_number() over(order by null) rnum 
    from products) 
where qty > 0 or (rnum <=20 and qty = 0);

        ID        QTY
---------- ----------
         1          0
         2          0
         3          0
[...]
        19          0
        20          0
        31         10
        32         10
[...]

Важно: в вопросе не указано условие сортировки, поэтому запрос выше вернёт случайный набор записей.

→ Ссылка