Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля / 7 сообщений из 7, страница 1 из 1
25.03.2020, 07:06
    #39940828
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
Есть таблица:
med(name, optional)
Выдает следующее:

авторТерапевт N
Терапевт Y
Профпатолог N
Невролог N

Нужно вывести уникальные имена, но если в одном присутствует optional = Y, а в другом optional = N, то вывести того, в котором N.
Т.е. в данном случае должен получиться результат:
авторТерапевт N
Профпатолог N
Невролог N


Смысл в том, что если в выдаче есть два раза один и тот же специалист, помеченный как обязательный, и как не обязательный, то оставлять только ту строку, где он обязательный.
...
Рейтинг: 0 / 0
25.03.2020, 07:13
    #39940834
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
Код: sql
1.
2.
3.
SELECT name, MIN(optional) optional
FROM table
GROUP BY name
...
Рейтинг: 0 / 0
25.03.2020, 07:37
    #39940839
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
Akina
Код: sql
1.
2.
3.
SELECT name, MIN(optional) optional
FROM table
GROUP BY name


Да, что-то такое видел, только не понял как работает. В данном случае MIN по счастливой случайности определит N как приоритетное. А в общем случае как можно задать? Если например есть 3 значения: N, Y и F. А нужно только N.
...
Рейтинг: 0 / 0
25.03.2020, 07:54
    #39940841
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
svnvlad

А в общем случае как можно задать? Если например есть 3 значения: N, Y и F. А нужно только N.

А если будет 2 значения: Y и F? Который из них?

В общем случае можно добавить таблиц с полями optional, rank, джойнить с основной и максимизировать по рангу
...
Рейтинг: 0 / 0
25.03.2020, 07:55
    #39940842
svnvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
paver
svnvlad

А в общем случае как можно задать? Если например есть 3 значения: N, Y и F. А нужно только N.

А если будет 2 значения: Y и F? Который из них?

В данном случае N. Ну с двумя понятно - MIN, MAX, а если из 3 средний?
...
Рейтинг: 0 / 0
25.03.2020, 08:03
    #39940843
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
Код: sql
1.
2.
3.
4.
5.
6.
7.
WITH cte AS ( SELECT *, 
                     ROW_NUMBER() OVER (PARTITION BY name 
                                        ORDER BY FIND_IN_SET(optional, 'N,Y,F') ) rn
              FROM sourcetable )
SELECT *
FROM cte
WHERE rn = 1
...
Рейтинг: 0 / 0
25.03.2020, 08:04
    #39940844
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
svnvlad

В данном случае N.

Я спрашивал - если предпочительным является N, а в наличии имеются только F и Y, то которую из них выводить?
Решение для общего случая предложил выше
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]