среда, 13 октября 2010 г.

SQL Query: Получение "уникальных" данных из БД

"Уникальных" это конечно сильно сказано... Дальше, я думаю, будет ясно о чем это я...

Дано:
Столбец 'emitent' таблицы 'deal' такого вида:
GAZP
ROSN
ROSN
VTB
ROSN
GMKN
GAZP
GMKN

Задача: Как получить только уникальные названия. Например:

GAZP
ROSN
VTB
GMKN

Решение: А вот как:
SELECT emitent FROM deal GROUP BY emitent HAVING count(*)!=0
Оказалось можно сделать проще: (спасибо, mvtm): 
SELECT DISTINCT emitent FROM deal
или
SELECT emitent FROM deal GROUP BY emitent

5 комментариев:

  1. а про select distinct ... благородный дон не знает?

    ОтветитьУдалить
  2. И еще - а нафига Having часть? ИМХО, одного select ... from ... group by ...?

    ОтветитьУдалить
  3. Да верно, достаточно сделать так: SELECT emitent FROM deal GROUP BY emitent, Спасибо за замечание!

    ОтветитьУдалить
  4. Это мускуль? Там что - distinct отстутствует?
    Т.е., по идее, правильно
    select distinct emitent from deal

    ОтветитьУдалить
  5. "select distinct emitent from deal"
    В sqlite такой вид тоже работает, отсюда возникает вопрос, что будет работать быстрее?...
    Предполагаю, что с distinct быстрее...

    ОтветитьУдалить