Выберите из двух таблиц, но только для максимальных значений в одном из столбцов - PullRequest
0 голосов
/ 05 июня 2019

У меня есть следующие две таблицы. Я хочу выбрать всех пользователей с user_type 1, а также подробности их последней заметки. Я хочу упорядочить результаты по заметке time_created.

users table:
user_id   name   user_type
1         Joe    1
2         Fred   1
3         Sam    0
4         Dave   0
notes table:
notes_id  user_id note            time_created
1         1       Joe 1           2019-06-05 13:45:00
2         1       Joe 2           2019-06-05 13:46:00
2         1       Joe 3           2019-06-05 13:47:00
3         2       Fred 1          2019-06-05 13:45:00
4         2       Fred 2          2019-06-05 13:46:00
5         3       Sam 1           2019-06-05 13:45:00
6         4       Dave 1          2019-06-05 13:45:00

Таким образом, результат запроса будет

user_id name   note     time_created
1       Joe    Joe 3    2019-06-05 13:47:00
2       Fred   Fred 2   2019-06-05 13:45:00

Пока это мое усилие

SELECT users.user_id, users.name, notes.note, notes.time_created FROM notes 
INNER JOIN users ON users.id=prospect_notes.subject_id  
WHERE users.user_type = 1 ORDER BY notes_time_created;

Это довольно хорошо, но возвращает несколько строк на пользователя. Я просто хочу одну строку, содержащую максимальное время создания.

1 Ответ

1 голос
/ 05 июня 2019

Вы можете использовать коррелированный подзапрос:

SELECT u.user_id, u.name, n.note, n.time_created
FROM users u JOIN
     notes n
     ON u.id = n.subject_id  
WHERE u.user_type = 1 AND
      n.notes_time_created = (SELECT MAX( n2.notes_time_created )
                              FROM notes n2
                              WHERE n2.subject_id = n.subject_id
                             )
ORDER BY n.notes_time_created;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...