gpt4 book ai didi

php - MySQL,结合 DISTINCT 和 JOIN

转载 作者:行者123 更新时间:2023-11-29 06:42:41 25 4
gpt4 key购买 nike

我有一个用户表,叫做 ..wait for it...“users”.. 然后另一个记录用户事件的表叫做...你永远猜不到...“activity”..

我有一个 HTML 表,它显示了 users 表中的用户,但我想按用户的上次事件对表进行排序。

这是我的查询。

SELECT * 
FROM `users`
JOIN `activity`
ON `activity`.`user_id` = `users`.`id`
ORDER BY `activity`.`timestamp`
LIMIT 25

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

如何更改查询以仅显示每个用户的一条记录,并按事件表中的最后一个事件对它们进行排序。

我确实尝试过使用“DISTINCT”关键字,但没有成功:/

最佳答案

"one record for each user and order them by the last activity in the activity table.?"

可以试试这个吗?假设您同时需要用户信息和事件信息。

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;

内部子查询找到每个 user_id 的 max_timestamp,外部 JOIN 发现事件有 max_timestamp 和 user_id

关于php - MySQL,结合 DISTINCT 和 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com