MySQL выберите * с отдельным идентификатором

18

Я пытаюсь выбрать строку с отдельным идентификатором, но возвращать все поля.

SELECT * DISTINCT(ID) FROM table WHERE ...

Мне в конечном итоге нужны ID, Город, Штат и Почтовый индекс. Как я могу получить строки, которые не являются повторяющимися идентификаторами, и возвращать все поля в мой mysql_fetch_array?

Я пробовал следующее:

SELECT * DISTINCT(ID) FROM table WHERE ...

SELECT DISTINCT ID * FROM table WHERE ...

SELECT ID,City,State,Zip DISTINCT ID FROM ...

SELECT ID,City,State,Zip DISTINCT(ID) FROM ...

Я читал здесь другие вопросы, и никто не помогает. Спасибо заранее!

    
задан NotJay 22.08.2012 в 16:35
источник
  • DISTINCT просто вернет уникальные идентификаторы из таблицы; что вы пытаетесь сделать точно? –  Burhan Khalid 22.08.2012 в 16:38
  • Мне нужно больше, чем только идентификаторы ... спасибо, хотя –  NotJay 22.08.2012 в 16:38
  • Итак, с тем же идентификатором, какую запись следует выбрать? –  xdazz 22.08.2012 в 16:38
  • , если есть несколько записей одного и того же идентификатора, имеющих разные адреса ... какой адрес вы бы хотели? случайный? –  poncha 22.08.2012 в 16:39
  • Я хотел выбрать 4 строки с разными идентификаторами, которые я бы использовал в City, State и Zip. Мне нужно было убедиться, что дублированные идентификаторы игнорируются, потому что я сортирую возвращаемые данные. Что касается идентификаторов, имеющих разные адреса, не имеет значения, какой адрес показывать, я просто не хочу дубликатов. Спасибо за вашу помощь, проблема была предотвращена. –  NotJay 22.08.2012 в 16:51

1 ответ

28

Попробуйте использовать GROUP BY :

  select id, city, state, zip
    from mytable
group by id

Обратите внимание, что это будет возвращать произвольный адрес для каждого id , если есть дубликаты.

Демо: Ссылка

    
ответ дан mellamokb 22.08.2012 в 16:37
источник
  • я бы добавил группу до или после ГДЕ? –  NotJay 22.08.2012 в 16:42
  • @NotJay - группа отправляется после того, как –  Eric Petroelje 22.08.2012 в 16:42
  • Perfect .... Большое спасибо. Первый раз, используя Group By! –  NotJay 22.08.2012 в 16:47
  • @NotJay: Позвольте мне просто указать, что это нетипичное использование GROUP BY. Основная цель - агрегация, то есть поиск MIN, MAX, SUM или другого итогового значения для каждой группы. Например, вы можете использовать GROUP BY для объединения результатов продаж данных по месяцам для создания ежемесячных итогов и средних значений. Я использую тот факт, что mysql позволяет ссылаться на столбцы, которые не группируются в запросе, что является неопределенным поведением (запрещенным) в большинстве других систем баз данных. Ура! –  mellamokb 22.08.2012 в 16:52
  • @mellamokb: хорошо, вы должны добавить его в ответ, а не оставлять его в комментарии! –  nico 22.08.2012 в 18:59