mySQL -> ПРЕДЕЛИТЬ выбранные строки, ГДЕ значение столбца одинаковое - PullRequest
0 голосов
/ 14 января 2020

Это мой запрос ... SELECT * FROM comments WHERE content_id in (525, 537) LIMIT 60 Это СС результата:

enter image description here

здесь content_id = 537 is выбран 5 раз. (comment_id является УНИКАЛЬНЫМ ключом) ..

Мой вопрос: Как ограничить выбранные строки на 2, где значения content_id одинаковы ... Максимум две повторяющиеся записи для каждого content_id .. как на этой картинке:

enter image description here

1 Ответ

0 голосов
/ 14 января 2020

Если вы используете MySQL 8.0, вы можете сделать это с помощью row_number():

select comment_id, content_id
from (
    select t.*, row_number() over(partition by content_id order by comment_id) rn
    from mytable t
) t
where rn <= 2

В более ранних версиях одним из решений является коррелированный подзапрос:

select t.*
from mytable t
where (
    select count(*) 
    from mytable t1 
    where t1.content_id = t.content_id and t1.comment_id < t.comment_id
) < 2
...