Как ограничить только 2 строки, чтобы показать для того же значения в MySQL - PullRequest
0 голосов
/ 13 мая 2019

Как показать все данные, но ограничить одно и то же значение имени, например, двумя строками, вот моя таблица 'test':

id  name
1   title-1
2   title-1
3   title-2
4   title-1
5   title-3
6   title-2
7   title-1
8   title-2

и я хочу, чтобы вывод получал все данные, но ограничивал только 2 строки, чтобы показать, если это одно и то же значение имени, например:

id  name
4   title-1
7   title-1
6   title-2
8   title-2
5   title-3

Ответы [ 3 ]

0 голосов
/ 13 мая 2019

Попробуй это. Должен работать.

SELECT name FROM test group by test having count(*) <= 2
0 голосов
/ 14 мая 2019

Попробуй это.

SELECT name from (
SELECT name, row_number() over (partition by name) as RN from TEST group by test having count(Name) >= 1 ) a where RN <= 2
0 голосов
/ 13 мая 2019

Вы можете использовать row_number() в MySQL 8 +:

select id, name
from (select t.*,
             row_number() over (partition by name order by id desc) as seqnum
      from t
     ) t
where sequm <= 2;

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

select t.*
from t
where t.id >= coalesce( (select t2.id
                         from t t2
                         where t2.name = t.name
                         order by t2.id desc
                         limit 1, 1
                        ), t.id);

Здесь является скриптом db <>, показывающей, что это дает желаемые результаты.

...