users 表和 auth_token_log表是一对多, 现在是把user的信息找出来 关联上一些
auth_token_log表的数据, 因为a表是多的一方,
要多他的数据进行一些条件匹配
这个sql目的是查出每个用户的最新的log记录
原始写法
SELECT
users.first_name,
users.email_address,
users.tp_user_id,
users.tp_username,
auth_token_log.module_access,
auth_token_log.created_date
FROM
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
FROM
users
INNER JOIN auth_token_log ON users.id = auth_token_log.user_id
WHERE
auth_token_log.id in(
SELECT
max(auth_token_log.id)
FROM
auth_token_log,
users
WHERE
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
的记录, 然后针对每一行记录X,拿出这一行X与 一个新的auth_token_log表做join,然后筛选出 log.user_id = x..user.id的所有记录, 然后查出max(id), 这就是最新的log记录的 id
还有一个类似的sql http://www.iteye.com/topic/1029921
表t_stu;其中三个字段:name,gender,grade;要求用一条sql语句查出男生前5名和女生前五名
select * from t_stu a where 5>(select count(*) FROM t_stu where gender=a.gender AND grade>a.grade) order by a.grade desc
对这个sql的理解是 对于每一行t_stu的记录, 拿出该条记录与一个新的t_stu做join, 然后找出这里面性别和自己一样,但分数比自己高的记录,然后统计这些记录的条数, 假如比自己高的记录数少于5,自己当然就是前5名了
分享到:
相关推荐
本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...
MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!
主要介绍了mysql一对多关联查询分页错误问题的解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
mysql多表查询和EXISTS查询性能对比
实现Mybatis框架中一对一关联映射的查询操作。 User用户表 - User_Card身份证表属于 1-1 的关系
mysql多表查询,联合查询
mysql多表联合查询 表连接的约束条件 MySQL如何优化LEFT JOIN和RIGHT JOIN
mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...
mysql多表联合查询.pdf
MyBatis高级映射(一对多查询)
mysql关联,左关联,右关联,内连接,外连接,交叉连接
在MySQL数据库中,多表关联查询是一种强大的技术,可以通过连接多个表来检索和组合数据,从而获得更丰富的查询结果。本文将介绍四种常见的多表关联查询类型:交叉连接查询、内连接查询、外连接查询和子查询,并提供...
Mysql学习中 ,单表查询每个人都很...但是多表之间的关联查询对于初学者是很难掌握的,以下是我学习中,结合老师所讲例子作的总结,主要就是三张表的关联查询。还包括group by操作。Join on;left join on;group by。
这是一个多表联合查询的小教程。希望能给大家带来帮助。希望大家多多学习!
mysql 树形结构查询,使用存储过程,实现mysql的树形结构查询
mysql对省市县的查询
Mysql 时间模糊查询,不同场景的查询方式,根据条件查询
单击此处添加标题 * * * * * * * * * * * * 目录页 MYSQL联合查询上 联合查询注入原理-SQL的union查询 SQL中UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。...
MySQL三种关联查询的方式_ ON vs USING vs 传统风格