gpt4 book ai didi

mysql - 选择最后 N 个唯一记录 mysql

转载 作者:行者123 更新时间:2023-11-29 05:28:13 26 4
gpt4 key购买 nike

我有一个“ session ”表,其中包含以下字段:

int int(11),
user_id int(11),
login_date timestamp,
ip varchar(15)

我想为每个用户选择最后的登录日期和最后三个唯一的 ip。我怎样才能优雅地做到这一点?

我找到了一个解决方案,但它非常非常丑陋、低效、耗时,并且涉及 mysql 和 bash 脚本的混合。我如何才能仅在 MySQL 中执行此操作?

附言该表有大约 430 万行。

一些示例数据:http://sqlfiddle.com/#!2/e9ddd

最佳答案

花了很多时间从SQL SERVER转换到MYSQL

我正在处理我的查询以获得更好的性能

select 
user_id,
max(cast(login_date as datetime)),
group_concat(distinct ip order by login_date desc SEPARATOR ' , ')
from
(
SELECT
user_id,
login_date,
ip,
CASE user_id
WHEN @curType
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curType := user_id
END as sequence
FROM sessions, (SELECT @curRow := 0, @curType := '') r
ORDER BY user_id asc,login_date desc
)t
where sequence<4
group by user_id

SQL FIDDLE

关于mysql - 选择最后 N 个唯一记录 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17565669/

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