请教一下获取最后一次数据的 sql 写法

2022-09-02 11:32:13 +08:00
 baobaoyinshen
ID 用户 ID 设备号 添加时间
无序 ID 1 88 2022-06-01 02:00:00
无序 ID 1 88 2022-06-02 02:00:00
无序 ID 1 88 2022-06-03 02:00:00
无序 ID 1 99 2022-06-01 02:00:00
无序 ID 1 99 2022-06-02 02:00:00
无序 ID 1 99 2022-06-03 02:00:00
无序 ID 2 77 2022-06-01 02:00:00
无序 ID 2 77 2022-06-02 02:00:00
无序 ID 2 77 2022-06-03 02:00:00
无序 ID 2 66 2022-06-01 02:00:00
无序 ID 2 66 2022-06-02 02:00:00
无序 ID 2 66 2022-06-03 02:00:00
无序 ID 3 88 2022-07-03 02:00:00

用户 ID and 设备号 为并且条件,获取每个用户的设备最后一次的添加时间,请问应该怎么写呢

1162 次点击
所在节点   SQL Server
10 条回复
HHHHHQ
2022-09-02 11:43:08 +08:00
用 max 函数啊
mineralsalt
2022-09-02 11:48:19 +08:00
我都是倒序排, 然后取一条, 不知道有没有更好性能的写法, 没操作过大数据
select * from xxxx while id = 'xxx' order by create_time desc limit 1
tangv2
2022-09-02 11:52:49 +08:00
row_number() over(partition by 用户 ID ,设备号 order by 添加时间 desc ) as cn
CEBBCAT
2022-09-02 12:17:54 +08:00
类似于这个,不知道 SQL Server 可不可以这么用。

DELETE t1 FROM test t1, test t2
WHERE t1.id > t2.id AND t1.email = t2.email

Ref: https://stackoverflow.com/a/51997854
---
不过我觉得还是加一个单调 ID 列比较好
hgc81538
2022-09-02 12:40:15 +08:00
select * from `table` where `user_id` = :user_id and `device_id` = :device_id order by `created_at` desc limit 1;
wxf666
2022-09-02 12:43:09 +08:00
这样?

SELECT MAX(添加时间)
FROM xxx
GROUP BY 用户 ID, 设备号

『以 用户 ID and 设备号 为并且条件』是啥。。读不懂。。
abc0123xyz
2022-09-02 13:11:32 +08:00
SET @row_number = 0, @customer_no = 0;
abc0123xyz
2022-09-02 13:13:10 +08:00
@abc0123xyz #7 看错了,以为是 mysql
cnoder
2022-09-02 14:45:30 +08:00
select user_id,device_id,max(login_time) as recent_login_time from table group by user_id,device_id;
Maxwe11
2022-09-03 01:15:49 +08:00
row_number() +1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/877210

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX