Переменная LIMIT от другого SELECT - PullRequest
2 голосов
/ 08 марта 2019

Я получил таблицу av со столбцами ID, amount.

Также получил таблицу users со столбцами ID, timestamp

Теперь каждый ваучер относится к first x пользователям (упорядоченным по метке времени), где x - это значение amount определенного ваучера.

Я сделал dbfiddle с небольшим примером

Мой ожидаемый результат:

voucherID    userID
11           10
12           10
12           11

Для лучшего понимания:

Администратор создает ваучер, который должен идти первым зарегистрированным пользователям X. Каждый ваучер имеет свой X

1 Ответ

2 голосов
/ 08 марта 2019

Я думаю, это то, что вы хотите:

with
u as (
  select userID, timestampMock, 
    row_number() over (order by timestampMock) as rn
  from users
)
select
  av.voucherID, u.userID
from av
join u on u.rn <= av.amount
order by av.voucherID, u.userID

Я протестировал его в вашем dbfiddle, и его результат:

voucherID   userID
---------   ------
11          10
12          10
12          11
...