Как показать имя пользователя из другой таблицы на основе максимального идентификатора в sqql - PullRequest
0 голосов
/ 05 августа 2020

Я попал в ловушку запроса sql, я знаю, что это может быть обычным делом, но не могу найти правильного решения. Из моей таблицы messages я успешно получил максимальный идентификатор, объединив столбцы from и to, теперь я пытаюсь вытащить name этого максимального идентификатора из другой таблицы с именами users,

Вот мой рабочий запрос, чтобы найти максимальный идентификатор,

select m.* 
from messages m 
where m.id in (select max(m.id) as max_id 
               from messages m 
               where m.`from` = 7 
                  or m.`to` = 7 
               group by least(m.`to`, m.`from`), greatest(m.`to`, m.`from`))

Я пробовал что-то вроде этого, но оно соответствует имени с from столбцом messages таблицы.

select messages.*, users.name 
from messages 
left join users on messages.`from` = users.id 
where messages.id in (select max(id) as max_id 
                      from messages 
                      where `from` = 7 
                         or `to` = 7 
                      group by least(`to`, `from`), greatest(`to`, `from`))

Я хочу, чтобы это имя отображалось в соответствии с максимальным идентификатором, который я получаю.

столбцы messages таблицы: id, from, to, created_at

столбцы таблицы users: id, name, email, created_at

Пожалуйста, помогите мне,

1 Ответ

1 голос
/ 05 августа 2020

Один из способов - это join, но только для столбца, который не 7:

select m.*, u.name
from messages m join
     users u
     on u.id in (m.`from`, m.`to`) and u.id <> 7
where m.id in (select max(m.id) as max_id
               from messages m
               where 7 in (m.`from`, m.`to`)
               group by least(m.`to`, m.`from`), greatest(m.`to`, m.`from`)
              );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...