with jackpot as
(
SELECT (SELECT Coalesce(Max(won_amount), 0)
FROM `fast_games`
INNER JOIN `fast_bets` AS `winning_fast_bets`
ON `winning_fast_bets`.`id` =
`fast_games`.`winning_bet_id`
WHERE users.id = winning_fast_bets.user_id
AND `fast_games`.`state` = ?)
AS `max_fast_jackpot`,
(SELECT Coalesce(Max(won_amount), 0)
FROM `coinflip_games`
INNER JOIN `coinflip_bets` AS `winning_coinflip_bets`
ON `winning_coinflip_bets`.`id` =
`coinflip_games`.`winning_bet_id`
WHERE users.id = winning_coinflip_bets.user_id
AND `coinflip_games`.`state` = ?)
AS `max_coinflip_jackpot` ),
id as user_id
FROM `users`
WHERE `id` = ?
)
select case when `max_fast_jackpot` > `max_coinflip_jackpot` then `max_fast_jackpot` else `max_coinflip_jackpot` end,
from jackpot
inner join ..... as foo
on foo.id = jackpot.user_id
where ....
select art.*, CASE WHEN sbr.artist_name IS NULL THEN 'FALSE' ELSE 'TRUE' END
from artists as art
left join subscriptions as sbr
on sbr.artist_name = art.name
and sbr.user_name = 'objque@me'
where art.name like '%skrill%'
А выбранное число помечать как "-1" например, если по индексу попадаем в -1, то идем в порядке увеличения индексов до следующего не равного "-1", если дошли до конца массива и ничего не нашли, то начинаем искать с начала, если и теперь ничего не нашли, то останавливаемся, когда дойдем до индекса от которого начали поиск (сделали полный круг по массиву), это значит, что все элементы выбраны и можно по новой заполнить массив.
При таком варианте не будет постоянно выделяться/освобождаться память, все происходит в пределах фиксированного буфера.