如何在sqql中基于max id显示另一个表中的用户名

8tntrjer  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(268)

我被困在一个sql查询中,我知道它可能很常见,但没有得到任何正确的解决方案。从我的table上 messages ,我已通过加入成功获取max id from 以及 to 现在我想做的是,我想把 name 从另一个表命名 users ,
这是我的工作查询以查找max id,

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`))

我试过这样的东西,但它和我的名字很相配 frommessages table。

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`))

我希望该名称将显示根据我得到的最大id。
messages 表:id,from,to,创建于
users 表:id、姓名、电子邮件、创建地点
请帮帮我,

vjhs03f7

vjhs03f71#

一种方法是 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`)
              );

相关问题