Это проблема, которая лучше всего подходит для аналитических функций, таких как номер строки и ранг. Но, поскольку ваша версия MariaDB не поддерживает их, мы должны найти обходной путь.
Одним из подходов, который не требует динамического SQL, является создание запроса, который находит минимальные и минимальные значения rowid
для каждой группы элементов. Затем мы просто присоединяем исходную таблицу к этому подзапросу, чтобы сохранить только первые две совпадающие строки.
SELECT t1.*
FROM yourTable t1
INNER JOIN
(
SELECT a.item, b.min_rowid, MIN(a.rowid) AS next_min_rowid
FROM yourTable a
INNER JOIN
(
SELECT item, MIN(rowid) AS min_rowid
FROM yourTable
GROUP BY item
) b
ON a.item = b.item
WHERE a.rowid > b.min_rowid
GROUP BY a.item, b.min_rowid
) t2
ON t1.item = t2.item AND (t1.rowid = t2.min_rowid OR t1.rowid = t2.next_min_rowid)
ORDER BY
t1.item, t1.rowid;
Демо