我被困在sql查询中,我知道这可能很常见,但没有得到任何适当的解决方案。从我的表messages中,我已经通过连接from和to列成功地获取了最大id,现在我要做的是,我想从另一个名为users的表中提取该最大id的name,
下面是我用来查找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`))我尝试过这样的操作,但它将name与messages表的from列相匹配。
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
请帮帮我,
发布于 2020-08-05 18:35:03
一种方法是对非7列执行join操作
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`)
);https://stackoverflow.com/questions/63263285
复制相似问题