У меня есть базы данных MySQL со следующей структурой:Сортировка сгруппированных строк в отчете MySQL
Таблица customers
:
- идентификатор (ИНТ)
- имя (строка)
- .. .
Таблица orders
:
- идентификатор (целое)
- CUSTOMERID (интермедиат)
- timestamp_unix (интермедиат)
- названия
Теперь я хочу, чтобы выбрать все клиент, а также их последний заказ , Я попробовал следующее заявление:
SELECT a.id, a.name, b.timestamp_unix, b.title FROM customers AS a JOIN orders AS b ON a.id = b.customerID GROUP BY a.id
Это работает отлично, за исключением, что я не получаю последний порядок (и его название), но первый, который был вставлен в базу данных в качестве первого.
Так как я могу получить последний заказ (самый высокий id
и самый высокий timestamp_unix
)? Только для метки времени я мог бы просто использовать MAX(b.timestamp_unix)
, но как мне получить соответствие b.title
?
Спасибо!
как насчет того же непосредственно timestamp_unix? последний (самый высокий идентификатор) вставлен на вершине ... что мне не хватает? – DonCallisto
Нет, конечно, это невозможно. В противном случае я бы не стал спрашивать здесь;) Пожалуйста, посмотрите мой комментарий на ответ филлинкля для получения более подробной информации. – caw
Хорошо, поскольку он удалил свой ответ сейчас: просто использование 'ORDER BY' невозможно, так как строки уже сгруппированы при переходе к директиве' ORDER BY', и поэтому MySQL выбирает одну строку каждой группы произвольно. – caw