@lurulu

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

Подскажите, пожалуйста как найти дубли строк по нескольким столбцам, где присутствуют значения NULL

Пример таблицы user

name profession city salary
Елена Учитель Москва 20000
Иван NULL NULL 40000
Богдан Учитель Санкт-Петербург 20000
Светлана Косметолог Томск 55000
Федор Искусствовед Нижний Новгород 18000
Светлана Косметолог Томск 34000
Богдан Учитель Казань 25000
Иван NULL NULL 14000

Я пишу следующий запрос:

SELECT * FROM user
WHERE  (name, profession, city)
IN  ( 
SELECT  name, profession, city FROM user
GROUP BY name, profession, city HAVING COUNT (*)>1
)
ORDER BY name;


Но данный запрос выдает только строки
Светлана Косметолог Томск 55000
Светлана Косметолог Томск 34000

а дубли со значением NULL - нет, не могу понять как это исправить.
  • Вопрос задан
  • 132 просмотра
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
SELECT user.*
FROM user
         join
     (
         SELECT name, profession, city
         FROM user
         GROUP BY name, profession, city
         HAVING COUNT(*) > 1
     ) as groupped on 
           groupped.name = user.name and COALESCE(groupped.profession = user.profession, 1) and COALESCE(groupped.city = user.city, 1)
ORDER BY name;


Ну такое. А поля ID у вас там никакого нет?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы