SQL: Как выбрать только уникальные (неповторяющиеся) записи

2010-09-01


SELECT DISTINCT ...

Отфильтровать все повторяющиеся записи с результата запроса можно с помощью DISTINCT.

Пример использования:
Допустим у нас есть таблица «winners» с данными:

id winner_name
1 Nick
2 Ann
3 Ann
4 David
5 Nick
6 Nick
7 Natali

Допустим нам нужно получить список всех уникальный имён победителей.
Выполнив следующий запрос, мы получим все неповторяющиеся имена:

SELECT DISTINCT winner_name FROM winners;

Результат запроса:

winner_name
Nick
Ann
David
Natali


15 комментариев на «SQL: Как выбрать только уникальные (неповторяющиеся) записи»

  1. йцу:

    ДЖЫГУРДА

  2. Егорка:

    Спасибо огромное, помогло!)

  3. Ilyas:

    Спасибо большое

  4. саня:

    как в php сделать вывод данных?

  5. Freespy:

    Молодца, пригодилось!

  6. Мебель:

    Как я искал подобное решение. Огромное вам спасибо!

  7. музыкальный магазин:

    А как удалить неуникальные??

  8. Петр:

    Спасибо большое!)

  9. masha777:

    а еще можно использовать group by :

    SELECT Filed FROM Table GROUP BY Field;

  10. Даша:

    Спасибо!

  11. Alexey:

    А если нужен и столбец id? подходит любое из значений… например
    id winner_name
    1 Nick
    2 Ann
    4 David
    5 Nick
    7 Natali

    как такой запрос может выглядеть?

  12. Alexey:

    Так же есть задача, похожая на предыдущую. Есть таблица с вопросами из разных тем для экзамена. Нужно выбрать по одному случайному вопросу из 2-х любых тем (например так).
    id theme question
    1 1 question1
    2 1 question2
    3 1 question3
    4 2 question4
    5 2 question5
    6 3 question6
    7 3 question7
    Тут решение из составного запроса в котором случайно сортируются все вопросы и берутся только 2 различные темы и потом как сделать, чтобы вопросов было по одному… Если кто знает — помогите, пожалуйста

  13. Николай:

    Спасибо, помог!

  14. Nadezhda:

    Спасибо! То что нужно!

  15. Артём:

    Добрый день!
    А если запрос из нескольких таблиц (например в итоге 5 столбцов) и надо оставить только уникальные значения по одному из столбцов?.
    SELECT Company.Name, Company.id, sender, doctype, _date
    from dochead
    join settings on settings.id = dochead.sender
    join Company on settings.Company = Company.ID
    where Receiver in (1)
    order by _date desc
    ______________
    В результате выводится список отправитель, id, тип документа, дата.
    Но показывает повторяющихся отправителей, а нужен только последний документ каждого отправителя для заданного получателя (Receiver in (1))

Добавить комментарий