glossyweb
@glossyweb
Mark marketing

Как выбрать только первую запись с одинаковым link_id?

У меня есть выборка biolink_blocks у которых соответствует link_id из списка.
Но эта выборка берет все блоки. Как изменить запрос чтобы она выбирала только первую запись с одинаковыми link_id? Так как у меня получается три записи с одинаковым почти контентом, а мне надо только первую.

SELECT links.*, B.biolink_block_id, B.settings AS social
			FROM links			
			LEFT JOIN biolinks_blocks B
			ON B.link_id = links.link_id
			WHERE B.type = 'socials'
			AND `links`.`is_enabled` = 1 
			AND `links`.`is_verified` = 1
			GROUP BY B.biolink_block_id
			ORDER BY links.link_id ASC LIMIT 9


тоесть у меня может быть несколько B.type = 'socials' с одинаковым link_id. Как оставить только первую?
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
К сожалению в MySQL 5.7 нет ни оконных функций ни СТЕ, поэтому решаем подзапросом.
Ниже решение в упрощённом виде. Под свой случай адаптируйте сами!
select * 
from blocks
join (
    select min(b.id) id
    from blocks b
    join links l on b.link_id = l.id
    where l.id = 1
) fb on fb.id = blocks.id;

https://sqlize.online/s/X2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы