`

mysql 一对多的时候 关联查询 筛选多方

阅读更多

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名了

 

 

 

 

 

分享到:
评论
1 楼 toptolove 2012-08-04  
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

你的这条语句还有漏洞吧,应该改为:
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

相关推荐

    MySQL 多表关联一对多查询实现取最新一条数据的方法示例

    本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...

    Mysql多表联合查询

    MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!

    mysql一对多关联查询分页错误问题的解决方法

    在MySQL数据库中,进行一对多关联查询时,经常会遇到分页错误的问题,这通常是由于查询方式不正确导致的。本文将详细介绍如何解决此类问题,并提供一个具体的示例来阐述解决方案。 首先,我们要理解一对多关联查询...

    mysql多表联合查询的教程

    MySQL 多表联合查询教程 在本教程中,我们将...多表联合查询是 MySQL 中的一种强大功能,可以帮助我们快速地检索数据,並且可以减少数据冗余。在实际应用中,多表联合查询可以帮助我们提高应用程序的性能和可靠性。

    MySQL查询把多列返回结果集拼装成一个字段

    mysql中有种可以通过join相关操作进行表与表之间的方式查询不同结果集,但是在一对多的情况下,关键查询的结果是多条的.例如:班级和学习的关系,我想很直观的看到班级和学生的情况,列表显示出班级的信息和班级的男生...

    mysql多表查询,联合查询

    mysql多表查询,联合查询

    mysql多表联合查询

    mysql多表联合查询 表连接的约束条件 MySQL如何优化LEFT JOIN和RIGHT JOIN

    mysql 树形结构查询

    MySQL 中的树形结构查询可以使用存储过程来实现,存储过程是一种复杂的查询逻辑,可以将复杂的查询逻辑封装在存储过程中,以提高查询效率和简化查询逻辑。存储过程可以根据需要设置递归深度,以控制查询的深度。 ...

    MYSQL基础:多表关联查询.docx

    在MySQL数据库中,多表关联查询是数据分析师和开发人员常用的一种高级技能,它能够从多个相关联的数据表中提取并合并所需的信息。这使得我们可以处理复杂的数据需求,获取更全面、更精确的分析结果。以下是对四种...

    mysql关联查询

    MySQL关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...

    mysql多表联合查询.pdf

    在给定的文件中,我们可以看到有关MySQL多表联合查询的知识点。首先,文件包含了创建和操作MySQL数据库表的SQL语句,接着是使用INSERT语句向表中插入数据的示例,最后是一些使用PHP通过MySQL扩展连接数据库进行操作...

    MySQL SQL多表关联查询最佳实例

    Mysql学习中 ,单表查询每个人都很...但是多表之间的关联查询对于初学者是很难掌握的,以下是我学习中,结合老师所讲例子作的总结,主要就是三张表的关联查询。还包括group by操作。Join on;left join on;group by。

    mysql对省市县的查询.sql

    mysql对省市县的查询

    MySql 按时间段查询数据方法(实例说明)

    随着对更复杂时间范围查询需求的增加,可以结合更多的时间函数和操作符来满足更高级的查询需求,例如查询特定年份、季度、周等。随着数据库管理经验的累积,熟练掌握这些时间相关函数将大大提高开发效率和数据处理的...

    行政区划码 mysql

    5. 查询和应用:在MySQL中,可以利用`JOIN`操作来关联包含行政区划码的表和其他数据表,例如人口统计数据,进行地域分析。还可以使用`LIKE`或`SUBSTRING`函数来按特定级别的行政区划码进行筛选。 6. 索引优化:为了...

    Mysql查询流程分析

    MySQL查询流程是指当用户向MySQL服务器发送一个查询请求时,MySQL内部执行的一系列操作过程。 #### 一、MySQL查询流程概述 MySQL查询流程主要包括以下几个步骤: 1. **客户端/服务器通信**:客户端通过网络与...

    45-MySQL单表2000万数据查询慢解决方案1

    MySQL单表2000万数据查询慢解决方案1 本文主要讨论了如何解决MySQL单表2000万数据查询慢的问题,通过将表分区和使用时间触发器来实现数据的优化。 分区设计 在解决方案中,我们使用的是按照8周将单表分为8个区,...

    sql查询优化(提高MySQL数据库查询效率的几个技巧)

    SQL 查询优化(提高 MySQL 数据库查询效率的几个技巧) 在 MySQL 数据库中,查询优化是一个非常重要的方面。...提高 MySQL 数据库查询效率需要从多方面入手,使用 Statement 进行绑定查询只是其中的一种方法。

    两种mysql递归tree查询效率-mysql递归tree

    MySQL作为一种广泛使用的数据库管理系统,提供了多种方法来实现递归查询。本文旨在通过对比两种不同的MySQL递归树查询方式,分析它们的效率差异,帮助开发者选择更适合实际应用场景的方法。 #### 二、环境准备 ...

Global site tag (gtag.js) - Google Analytics