Как посчитать дубли записей бд по нескольким столбцам, но чтобы при этом в других столбцах были только уникальные значения?

Для того, чтобы посчитать дубли записей в базе данных MySQL по нескольким столбцам с условием на уникальные значения в других столбцах, можно использовать комбинацию группировки (GROUP BY), функции подсчета дублированных записей (COUNT), а также операторы HAVING и DISTINCT.

Прежде всего, определим набор столбцов, по которым мы хотим найти дубли. Допустим, мы хотим считать дубли по столбцам "column1" и "column2", при условии, что значения в столбцах "column3" и "column4" являются уникальными.

Запрос для подсчета дубликатов может выглядеть следующим образом:

SELECT column1, column2, COUNT(*) as count
FROM table_name
GROUP BY column1, column2
HAVING count > 1
ORDER BY count DESC;

В данном запросе мы выбираем значения столбцов "column1" и "column2", а также используем функцию COUNT(*) для подсчета количества записей с одинаковыми значениями в этих столбцах.

Затем мы используем оператор GROUP BY, чтобы сгруппировать записи по значениям столбцов "column1" и "column2".

Далее применяем условие HAVING count > 1, чтобы отфильтровать только те группы, в которых количество записей больше одной. Это позволяет выделить только дублирующиеся записи.

Оператор ORDER BY count DESC используется для сортировки результатов по убыванию количества дубликатов.

Также, для того чтобы убедиться, что значения в остальных столбцах являются уникальными, можно добавить оператор DISTINCT, чтобы убрать повторения значений:

SELECT DISTINCT column3, column4, column1, column2, COUNT(*) as count
FROM table_name
GROUP BY column1, column2, column3, column4
HAVING count > 1
ORDER BY count DESC;

Здесь мы добавляем в запрос столбцы "column3" и "column4", а также используем оператор DISTINCT, чтобы убрать повторения значений в этих столбцах.

Таким образом, данный запрос позволяет найти дубликаты записей по нескольким столбцам, при условии, что значения в других столбцах являются уникальными. Обратите внимание, что для оптимизации запроса могут быть использованы индексы на соответствующих столбцах.