Как заказать или выбрать строки в предложении MySQL GROUP BY? - PullRequest
2 голосов
/ 15 октября 2010

У меня есть такая таблица:

id       number    otherfields
-------------------------------------------
664      48       aaa
665      49       bbb
666      55       ccc
667      48       ddd

Мои группы запросов по полю number, и я хочу, чтобы он выбрал первое (самое низкое) id, чтобы данные выглядели как ccc,aaa,bbb (при заказе по number). Однако я получаю ccc,ddd,bbb - другими словами, он выбирает строку № 667 вместо # 664 для числа 48.

Как ни странно, это происходит только на живом сервере; на локальном хосте я получаю правильный путь, даже если таблица точно такая же (экспортирована с локального хоста, импортирована на сервер).

Можно ли гарантировать, что предложение GROUP BY выберет первый идентификатор?

Ответы [ 2 ]

4 голосов
/ 15 октября 2010

Нет, это невозможно в MySQL. Вы должны использовать соединение.

SELECT id, number, otherfields FROM table 
  WHERE id in (SELECT min(id) FROM table GROUP BY number)
0 голосов
/ 15 октября 2010

версия SQL-92.

SELECT 
     id, number, otherfields 
FROM 
     table t
     join (SELECT min(id) as id, number FROM table GROUP BY number) sq --subquery
       on t.id = sq.id
...