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 多表联合查询教程 在本教程中,我们将...多表联合查询是 MySQL 中的一种强大功能,可以帮助我们快速地检索数据,並且可以减少数据冗余。在实际应用中,多表联合查询可以帮助我们提高应用程序的性能和可靠性。
mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...
mysql多表查询,联合查询
mysql多表联合查询 表连接的约束条件 MySQL如何优化LEFT JOIN和RIGHT JOIN
MySQL 中的树形结构查询可以使用存储过程来实现,存储过程是一种复杂的查询逻辑,可以将复杂的查询逻辑封装在存储过程中,以提高查询效率和简化查询逻辑。存储过程可以根据需要设置递归深度,以控制查询的深度。 ...
在MySQL数据库中,多表关联查询是数据分析师和开发人员常用的一种高级技能,它能够从多个相关联的数据表中提取并合并所需的信息。这使得我们可以处理复杂的数据需求,获取更全面、更精确的分析结果。以下是对四种...
MySQL关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...
在给定的文件中,我们可以看到有关MySQL多表联合查询的知识点。首先,文件包含了创建和操作MySQL数据库表的SQL语句,接着是使用INSERT语句向表中插入数据的示例,最后是一些使用PHP通过MySQL扩展连接数据库进行操作...
Mysql学习中 ,单表查询每个人都很...但是多表之间的关联查询对于初学者是很难掌握的,以下是我学习中,结合老师所讲例子作的总结,主要就是三张表的关联查询。还包括group by操作。Join on;left join on;group by。
mysql对省市县的查询
随着对更复杂时间范围查询需求的增加,可以结合更多的时间函数和操作符来满足更高级的查询需求,例如查询特定年份、季度、周等。随着数据库管理经验的累积,熟练掌握这些时间相关函数将大大提高开发效率和数据处理的...
5. 查询和应用:在MySQL中,可以利用`JOIN`操作来关联包含行政区划码的表和其他数据表,例如人口统计数据,进行地域分析。还可以使用`LIKE`或`SUBSTRING`函数来按特定级别的行政区划码进行筛选。 6. 索引优化:为了...
MySQL查询流程是指当用户向MySQL服务器发送一个查询请求时,MySQL内部执行的一系列操作过程。 #### 一、MySQL查询流程概述 MySQL查询流程主要包括以下几个步骤: 1. **客户端/服务器通信**:客户端通过网络与...
MySQL单表2000万数据查询慢解决方案1 本文主要讨论了如何解决MySQL单表2000万数据查询慢的问题,通过将表分区和使用时间触发器来实现数据的优化。 分区设计 在解决方案中,我们使用的是按照8周将单表分为8个区,...
SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。...提高 MySQL 数据库查询效率需要从多方面入手,使用 Statement 进行绑定查询只是其中的一种方法。
MySQL作为一种广泛使用的数据库管理系统,提供了多种方法来实现递归查询。本文旨在通过对比两种不同的MySQL递归树查询方式,分析它们的效率差异,帮助开发者选择更适合实际应用场景的方法。 #### 二、环境准备 ...