mysql一对多关联查询的时候筛选要求
发布时间:2022-06-20 14:24:24 所属栏目:MySql教程 来源:互联网
导读:对于关联查询本人在开发应用中使用得很少,因为我处理数据量都非常的大所以关联对我来说可能导致数据库访问缓存,今天看到一朋友写了一篇关于mysql一对多关联查询的时候筛选条件看了有点意思于是与大家分享. users 表和 auth_token_log表是一对多,现在是把user
对于关联查询本人在开发应用中使用得很少,因为我处理数据量都非常的大所以关联对我来说可能导致数据库访问缓存,今天看到一朋友写了一篇关于mysql一对多关联查询的时候筛选条件看了有点意思于是与大家分享. users 表和 auth_token_log表是一对多,现在是把user的信息找出来关联上一些 auth_token_log表的数据,因为a表是多的一方,要多他的数据进行一些条件匹配,这个sql目的是查出每个用户的最新的log记录. 原始写法,代码如下: users INNER JOIN auth_token_log ON users.id = auth_token_log.user_id WHERE auth_token_log.id in( SELECT max(id) FROM auth_token_log WHERE auth_token_log.user_id = users.id ) 自己的理解,代码如下: SELECT users.first_name, users.email_address, users.tp_user_id, users.tp_username, auth_token_log.module_access, auth_token_log.created_date auth_token_log.user_id = users.id GROUP BY users.id ) 对于原始写法的理解是,先查出如下代码的记录: SELECT × FROM users INNER JOIN auth_token_log ON users.id = auth_token_log.user_id //开源代码phpfensi.com 然后针对每一行记录X,拿出这一行X与 一个新的auth_token_log表做join,然后筛选出 log.user_id = x..user.id的所有记录,查出max(id),这就是最新的log记录的 id. (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |