首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据sqql中的最大id显示另一个表中的用户名

问如何根据sqql中的最大id显示另一个表中的用户名
EN

Stack Overflow用户
提问于 2020-08-05 18:32:05
回答 1查看 21关注 0票数 0

我被困在sql查询中,我知道这可能很常见,但没有得到任何适当的解决方案。从我的表messages中,我已经通过连接from和to列成功地获取了最大id,现在我要做的是,我想从另一个名为users的表中提取该最大id的name,

下面是我用来查找max id的工作查询,

代码语言:javascript
复制
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`))

我尝试过这样的操作,但它将name与messages表的from列相匹配。

代码语言:javascript
复制
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、created_at

users表的列: id、name、email、created_at

请帮帮我,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-05 18:35:03

一种方法是对非7列执行join操作

代码语言:javascript
复制
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`)
              );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63263285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档