У меня есть таблица с именем books, с такими строками, как:
+----+----------+---------+--------+-----------+
Id PNo Gid Genre Trailer
+----+----------+---------+--------+------------+
1 1234567 55 NULL NULL
2 1234567 64 Fiction NULL
3 8763525 64 Fiction NULL
4 8763525 73 Fiction NULL
5 5555555 18 Fiction NULL
6 5555555 64 Fiction NULL
+---------------------------------------------------
Что мне нужно сделать, это следующее: я хочу удалить все строки с дублирующимися данными на основе столбца PNo и где значение Gid = 64, а также Pno не равно 5555555
Следующий запрос возвращает мне нужные мне результаты (повторяющиеся строки), но мне нужно знать, как можно сделать удаление также на основе по вышеуказанным критериям:
SELECT
COUNT(*) as repetitions,
group_concat(PNo, ' (', Gid, ', ', Genre, ') ' SEPARATOR ' | ')
as row_data
FROM books
GROUP BY PNo
HAVING repetitions > 1;
DELETE m1 FROM books m1
INNER JOIN books m2
ON m1.PNo = m2.PNo
WHERE m1.PNo = '64' AND m1.PNo != 5555555
Приведенное выше удалит все строки, имеющие m1.PNo = '64', когда мне нужно будет удалить только повторяющиеся строки, основываясь на значении столбца PNo , который также имеет в столбце Gid значение 64. Каким должен быть мой запрос на удаление?