Предположим, что я хочу взять все повторяющиеся значения таблицы, выполнив следующие критерии: 1- Соответствует (first_name, last_name, father_name). 2- соответствует (nationalId). 3- соответствует (номер телефона).Mysql как группировать по нескольким столбцам и выбирать значение флага на основе сопоставленной группы
Предположим, я хочу, чтобы все пользователи, зарегистрировавшие их самостоятельно, использовали более одного, используя вышеуказанные условия. Теперь я хочу взять эти дубликаты записей, по другим столбцам мне нужно выбрать столбец matched_type
, который должен иметь один из этих значений 1
, 2
, 3
на основе того, что соответствовало. Теперь у меня есть отдельный запрос для каждого подходящего критерия, можно ли это сделать одним запросом?
У меня есть эти запросы:
SELECT u.first_name,u.last_name,u.father_name,u.national_id,u.phone,COUNT(u.id) AS total,'1' AS match_type
FROM users
GROUP BY CONCAT(u.first_name,u.last_name,u.father_name)
HAVING total > 1
и для второго критериев соответствия:
SELECT u.first_name,u.last_name,u.father_name,u.national_id,u.phone,COUNT(u.id) AS total, '2' AS match_type
FROM users
GROUP BY u.national_id
HAVING total > 1
и для последнего:
SELECT u.first_name,u.last_name,u.father_name,u.national_id,u.phone,COUNT(u.id) AS total, '3' AS match_type
FROM users
GROUP BY u.phone
HAVING total > 1
И тогда я так:
SELECT src.* FROM (first_query UNION ALL second_query UNION ALL third_query)
Пожалуйста, включите ваш запрос и данные. Как сейчас, этот вопрос не будет очень полезен никому другому. –
Не могли бы вы также добавить структуру таблицы? – MontyPython