За последние 24 часа нас посетили 20772 программиста и 1130 роботов. Сейчас ищут 347 программистов ...

Выборка дублей по 2-м полям

Тема в разделе "MySQL", создана пользователем Dedov_Evgeniy, 26 янв 2019.

  1. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Есть запрос который выбирает дубли по 2 полям:
    Код (Text):
    1. SELECT
    2. clients.*,
    3. COUNT(*) AS repeat,
    4. GROUP_CONCAT(CONCAT(phone, ", ", email) SEPARATOR "<br/>") AS phone_email
    5. FROM clients
    6. GROUP BY phone, email
    7. HAVING repeat > 1
    Он у меня выбирает дубли одновременно совпадают 2 поля phone и email
    А как можно сделать что бы дублями считались и такие записи:

    Это считается дублем:
    89085769667 mail@mail.ru
    89085769667 andrey@mail.ru

    Это тоже дубли:
    89085769667 mail@mail.ru
    89228235973 mail@mail.ru

    Спасибо.
     
  2. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    497
    Симпатии:
    57
    без строки
    Код (Text):
    1. HAVING repeat > 1
    тоже не то получается?
     
  3. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Нет, мне же нужны записи которых больше 1, если есть дубль по phone или email.
     
  4. Dedov_Evgeniy

    Dedov_Evgeniy Активный пользователь

    С нами с:
    14 май 2015
    Сообщения:
    58
    Симпатии:
    1
    Вот так верно отрабатывает, но хочется узнать чисто для знания и наверно более грамотнее, можно обойтись без UNION?
    Код (Text):
    1. SELECT
    2. clients.*,
    3. COUNT(*) AS repeat,
    4. GROUP_CONCAT(CONCAT(phone, ", ", email) SEPARATOR "<br/>") AS phone_email
    5. FROM clients
    6. GROUP BY phone
    7. HAVING repeat > 1
    8.  
    9. UNION
    10.  
    11. SELECT
    12. clients.*,
    13. COUNT(*) AS repeat,
    14. GROUP_CONCAT(CONCAT(phone, ", ", email) SEPARATOR "<br/>") AS phone_email
    15. FROM clients
    16. GROUP BY email
    17. HAVING repeat > 1