加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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.

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读