Как мне создать запрос для этого? - PullRequest
1 голос
/ 07 июня 2009

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

+--------+---------+-----------+------------+
| bed_id | bed_num | place_id  | bed_date   |
+--------+---------+-----------+------------+
|      1 |     150 |         1 | 1244344305 |
|      2 |     250 |         1 | 1244345469 |
|      3 |     145 |         2 | 1244348496 | 
|      3 |     146 |         2 | 1244348497 | 
+--------+---------+-----------+------------+

Я хочу выбрать все уникальные place_id с самой последней датой bed_num, поэтому она должна вернуть что-то вроде ниже:

+--------+---------+-----------+------------+
| bed_id | bed_num | place_id  | bed_date   |
+--------+---------+-----------+------------+
|      2 |     250 |         1 | 1244345469 |
|      3 |     146 |         2 | 1244348497 | 
+--------+---------+-----------+------------+

Я попытался смешать GROUP BY и ORDER BY, используя разные (place_id) и max (bed_date)

Но не удалось!

Спасибо за любую помощь! :)

1 Ответ

3 голосов
/ 07 июня 2009

Поскольку вы хотите получить некоторые агрегированные данные (place_id, date bed) и другие неагрегированные данные (bed_id и bed_num), вам нужно использовать подвыбор, чтобы выполнить агрегирование, а затем присоединиться к нему, как если бы он был анонимный просмотр:

SELECT bed_id, bed_num, place_id, bed_date
FROM beds
INNER JOIN (SELECT place_id, MAX(bed_date) FROM beds GROUP BY place_id) max_dates
ON max_dates.place_id = beds.place_id AND max_dates.bed_date = beds.bed_date

В противном случае ваша совокупная «группа по» будет применяться ко всем вашим столбцам, и вы получите (потенциально случайные) bed_id и bed_num из совокупности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...