Mariadb: mysql  Ver 15.1 Distrib 10.3.8-MariaDB
У меня есть таблица, построенная как объединение запросов из нескольких других таблиц. Эта таблица выглядит примерно так
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| source_id   | int(11)      | YES  |     | NULL    |                |
| code        | varchar(64)  | YES  |     | NULL    |                |
| description | varchar(255) | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
Поле кода может содержать "лишнюю" информацию в фигурных скобках {думать о них как о комментариях}. Я хочу найти все строки, где поле кода равно, если комментарии игнорируются, а затем оставить только одну строку из каждой дублирующейся группы.
Это бит "держать один ряд в каждой группе", который вызывает у меня проблемы.
У меня есть запрос, в котором будут перечислены идентификаторы всех строк в каждой группе
select id
from mytable
group by (regexp_replace(code, '(?-i){.*?}', ''))
having count(*) > 1
но если я сделаю это подзапросом в операции DELETE WHERE, он удалит все дубликаты. Не то, что я хочу.
После поиска функции «все, кроме одного» или "вытолкнуть одного из списка вывода" я наткнулся на версию LIMIT с двумя аргументами и OFFSET-
select id
from mytable
group by (regexp_replace(code, '(?-i){.*?}', ''))
having count(*) > 1 limit 1000000 offset 1
но если вы поместите это в команду DELETE, это не удастся
delete from mytable where id in(
    select id
    from mytable
    group by (regexp_replace(code, '(?-i){.*?}', ''))
    having count(*) > 1 limit 1000 offset 1
);
ERROR 1235 (42000): This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Есть идеи как этого добиться? Предпочтительно на месте, но в худшем случае я мог бы ВЫБРАТЬ во временную таблицу, а затем заменить оригинал, если это то, что нужно.
