Возможно, вы захотите только те строки, которые являются дубликатами. Если в вашей версии MySQL нет доступных оконных функций, вы можете сделать следующее:
SELECT
t.*
FROM your_table AS t
JOIN (SELECT columnA, columnB
FROM your_table
GROUP BY columnA, columnB
HAVING COUNT(*) > 1) AS dt
ON dt.columnA = t.columnA AND dt.columnB = t.columnB
Подробности: В производной таблице мы получаем все комбинации columnA
и columnB
, которые имеют более одной строки (строк) (HAVING COUNT(*) > 1
).
Теперь мы просто присоединяем этот набор результатов к основной таблице, чтобы получить только эти строки.
Примечание: Этот подход не понадобится, если вы хотите выбрать только эти два столбца. Достаточно простого Group By
с Having
, как это предлагается в других ответах. Однако, если у вас есть больше столбцов в таблице, и вам нужно будет извлечь все из них, а не только столбцы (используемые для определения дубликатов); вам нужно будет использовать этот подход.