@UserTwo

Как найти уникальные значения которые хранятся в массиве?

Вообщем мне необходимо сгенерировать для пользователя в комментариях псевдоуникальную иконку. id иконок хранятся в массиве. Таблица имеет вид:
id|publication|icon_id
1|1|1
1|1|2

Возможно ли найти не занятую иконку (их всего 40)?
  • Вопрос задан
  • 31 просмотр
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Решение для MySQL 8.0 и старше:
with recursive free_icons (id) as (
	select 1 
	union all
	select id+1 from free_icons where id <= 40
)
select * from free_icons
where not exists (
	select icon_id from icons where icon_id = free_icons.id
)
limit 1;


MySQL fiddle

Для старых версий можно использовать запрос:
select icons.icon_id + 1
from icons
left join icons as next_icon on icons.icon_id + 1 = next_icon.icon_id
where next_icon.icon_id is null and icons.icon_id between 2 and 40
limit 1;


MySQL 5.7 fiddle
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы