Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Выбрать из таблицы все значения по одному разу (без повторов)

#mysql #sql


Допустим есть такая таблица:

id|name|number
1 |Igor|89172281212
2 |Petr|89274554545
3 |Andr|89172281212


Подскажите, как составить sql-код, который выведет 1 и 2 строчку, а 3 не надо, т.к.
их телефоны (с 1м) одинаковые.
    


Ответы

Ответ 1



Можно явно исключить лишние записи. Только надо определится по какому конкретно условию исключать. Вернее какая из записей с данным телефоном может быть более интересна. Например select * from Table as A where not exists(select 1 from Table as B where B.number=A.number and B.id

Ответ 2



Нужно сгруппировать выдачу по какому либо параметру (number) и указать что делать с остальными колонками (id, name) при группировке (min max count avg sum и т.п.)

Ответ 3



Вариант с подзапросом (по номеру берём минимальный id и потом по выбранным id соотв. записи): select T.* from TableName T join ( select min(id) as id from TableName group by number ) T2 on T2.id = T.id

Ответ 4



Упрощаю select * from t where id in( select min(id) from t group by number)

Комментариев нет:

Отправить комментарий