By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table queue(queue_id int primary key auto_increment, tele bigint);
insert into queue values
(null, null)
, (null, null)
, (null, null)
, (null, null)
, (null, null)
, (null, null)
, (null, null)
, (null, null)
, (null, null)
, (null, null)
create table container (container_id int primary key auto_increment, queue_container_id int, source bigint);
insert into container values
(null, 1, 1000000001)
, (null, 1, 1000000002)
, (null, 1, 1000000003)
, (null, 1, 1000000004)
, (null, 1, 1000000005)
, (null, 2, 1000000003)
select *
from queue q
inner join (
select c.*,
row_number() over(order by container_id) rn,
count(*) over() cnt
from container c
where queue_container_id = 1
) c on (c.rn - 1) = (q.queue_id - 1) % c.cnt
queue_id | tele | container_id | queue_container_id | source | rn | cnt |
---|---|---|---|---|---|---|
1 | null | 1 | 1 | 1000000001 | 1 | 5 |
2 | null | 2 | 1 | 1000000002 | 2 | 5 |
3 | null | 3 | 1 | 1000000003 | 3 | 5 |
4 | null | 4 | 1 | 1000000004 | 4 | 5 |
5 | null | 5 | 1 | 1000000005 | 5 | 5 |
6 | null | 1 | 1 | 1000000001 | 1 | 5 |
7 | null | 2 | 1 | 1000000002 | 2 | 5 |
8 | null | 3 | 1 | 1000000003 | 3 | 5 |
9 | null | 4 | 1 | 1000000004 | 4 | 5 |
10 | null | 5 | 1 | 1000000005 | 5 | 5 |
select *
from queue q
inner join (
select c.*, @rn := @rn + 1 rn
from (
select *
from container c
where queue_container_id = 1
order by container_id
) c
cross join (select @rn := 0) x
) c on (c.rn - 1) = (q.queue_id - 1) % @rn
queue_id | tele | container_id | queue_container_id | source | rn |
---|---|---|---|---|---|
1 | null | 1 | 1 | 1000000001 | 1 |
2 | null | 2 | 1 | 1000000002 | 2 |
3 | null | 3 | 1 | 1000000003 | 3 |
4 | null | 4 | 1 | 1000000004 | 4 |
5 | null | 5 | 1 | 1000000005 | 5 |
6 | null | 1 | 1 | 1000000001 | 1 |
7 | null | 2 | 1 | 1000000002 | 2 |
8 | null | 3 | 1 | 1000000003 | 3 |
9 | null | 4 | 1 | 1000000004 | 4 |
10 | null | 5 | 1 | 1000000005 | 5 |