mysql - 从 MySQL 中的两个表中获取一个到多个记录的记录
问题描述
想要以从主表中的一条记录和从多关系表中的另一条记录的方式从一对多关系中检索记录。
确切的问题:带有“user_devices”的表 1 具有用户具有 user_id 映射的设备的 id。
现在来自表 2,其中包含许多用于用户设备的记录。名称是“collection_datas”。
我想从 collection_datas 表中获取最近的记录,该表的 server_time 是最新的,并且还想与主 userdevice 表进行映射。
所以最终记录应该包含 user_devices 表中的所有记录,其中 1 条记录与 collection_datas 表与该 server_time 关联
有关更多详细信息,请参见下表字段:
表 1 'user_devices':
id
user_id
device_id
表 2 'collection_datas'
id
device_id
server_time
预期的结果应该有记录
server_time > Ymd H:i:s (ex: 2020-08-07 11:23:00)
我如何使用 MAX 任何建议?
Sample data of Table user_devices
id user_id device_id
1 170 1
2 170 2
3 170 3
Table 2 'collection_datas'
id device_id server_time
1 1 2020-08-07 11:23:00
2 1 2020-08-06 12:43:00
3 2 2020-08-07 12:32:00
4 2 2020-08-07 12:44:34
5 2 2020-08-07 13:43:32
6 3 2020-08-08 11:35:32
7 3 2020-08-08 12:35:32
以上是样本数据。我想从表 users_devices 中获取记录,并从表 2 中获取 1 条记录,其中包含最新的服务器时间。
我认为以上应该足够了。
解决方案
每个设备的最新数据应该是
select device_id, max(server_time)
from collection_datas
group by device_id
如果你也需要用户 ID
select c.device_id, max(c.server_time), u.user_id
from collection_datas c
INNER JOIN user_devices ON u u.device_id = c.device_id
group by device_id
推荐阅读
- ios - 移动应用 (iOS) 安全转储内存转储 (Frida)
- r - r — map(map(Auto, range), function(col) {paste0(col[[1]], “,” col[[2]])} 的更面向流 (%>%) 的习惯用法是什么?
- python - 如何检查用户输入是否在列表中的随机字符串中?
- dictionary - Haskell:更新二叉树
- class - 类方法每次都返回null
- function - C++ 中两个变量的函数输出不清楚
- maven - Maven 没有选择本地安装的依赖项
- python - 在python中用重复值反转字典
- node.js - 独立部署 AWS Lambda 与在应用程序堆栈中部署的不同行为
- python - 根据其他值更新数据框。这是一个传统的 UPSERT 任务,带有一个新的指标列