首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL,结合DISTINCT和JOIN

问MySQL,结合DISTINCT和JOIN
EN

Stack Overflow用户
提问于 2013-12-11 07:37:09
回答 2查看 99关注 0票数 1

我有一个用户表,名为..wait .“用户”。另一个记录用户活动的表格叫做.你永远猜不到.“活动”。

我有一个HTML,它显示users表中的用户,但是我想按用户的最后一个活动对表进行排序。

这是我的问题。

代码语言:javascript
复制
SELECT * 
FROM `users` 
JOIN `activity` 
    ON `activity`.`user_id` = `users`.`id` 
    ORDER BY `activity`.`timestamp` 
        LIMIT 25

这里的问题是,它显示了每个用户的多个行,因为activity表中每个用户都有多个记录。

如何更改查询,使其只显示每个用户的一条记录,并按活动表中的最后一个活动对其进行排序。

我试过使用"DISTINCT“关键字,但没有运气:/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-11 07:40:57

“每个用户都有一个记录,并按活动表中的最后一个活动对其进行排序。”

库利试试这个?假设您同时需要用户信息和活动信息。

代码语言:javascript
复制
SELECT users.*, a.*
FROM users INNER JOIN (
    SELECT user_id, MAX(timestamp) max_timestamp
    FROM activity
    GROUP BY user_id
) x ON users.user_id = x.user_id 
INNER JOIN activity a ON x.user_id = a.user_id AND a.timestamp = x.max_timestamp
ORDER BY a.timestamp;

内部子查询为每个max_timestamp查找user_id,外部连接查找活动具有max_timestamp和user_id。

票数 2
EN

Stack Overflow用户

发布于 2013-12-11 07:57:03

这不是SQL解决方案,但我要做的是将lastActivity列保留在User表中,并在需要时进行更新。然后,按这一列进行排序、过滤将非常容易和有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20513207

复制
相关文章

相似问题

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