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

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

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


Смысл в том, что если в выдаче есть два раза один и тот же специалист, помеченный как обязательный, и как не обязательный, то оставлять только ту строку, где он обязательный.
...
Рейтинг: 0 / 0
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
    #39940834
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT name, MIN(optional) optional
FROM table
GROUP BY name
...
Рейтинг: 0 / 0
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
    #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
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
    #39940841
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad

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

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

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

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

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

В данном случае N. Ну с двумя понятно - MIN, MAX, а если из 3 средний?
...
Рейтинг: 0 / 0
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
    #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
Удалить дубликаты из выдачи, но с предпочитаемым значением другого поля
    #39940844
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
svnvlad

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

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


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