`
退役的龙弟弟
  • 浏览: 453732 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL关联查询

 
阅读更多

两个表:

name表

id	name
1	ru
2	ruge
3	ruye
4	rushen

 

 score表

 

id	score
1	120
2	130
4	150
5	110

 

1.内联

 

(1)不做限制

SELECT * FROM NAME AS NAME INNER JOIN score AS s ;

结果:
    id  name        id   score  
------  ------  ------  --------
     1  ru           1       120
     2  ruge         1       120
     3  ruye         1       120
     4  rushen       1       120
     1  ru           2       130
     2  ruge         2       130
     3  ruye         2       130
     4  rushen       2       130
     1  ru           4       150
     2  ruge         4       150
     3  ruye         4       150
     4  rushen       4       150
     1  ru           5       110
     2  ruge         5       110
     3  ruye         5       110
     4  rushen       5       110

 (2)id相等时

SELECT * FROM NAME AS n INNER JOIN score AS s ON n.`id`=s.`id`;

结果:
id	name	id	score
1	ru	1	120
2	ruge	2	130
4	ruye	4	150

 2、左外连接(left join 或者left outer join)

 

SELECT * FROM NAME AS n LEFT JOIN score AS s ON n.`id`=s.`id`;

结果:

    id  name        id   score  
------  ------  ------  --------
     1  ru           1       120
     2  ruge         2       130
     4  rushen       4       150
     3  ruye    (NULL)    (NULL)

 

 3、右外连接(right join或者right outer join)

SELECT * FROM NAME AS n RIGHT JOIN score AS s ON n.`id`=s.`id`;

结果:

id	name	id	score
1	ru	1	120
2	ruge	2	130
4	ruye	4	150
\N	\N	5	110

 注:外联必须有查询条件

 

 二、3表关联查询

 

没有限制条件时:

SELECT * FROM `stuname` nm INNER JOIN `stuaddress` address INNER JOIN `stuscore` score;

 

id	name	id	address	id	score
1	ru	1	hebei	1	120
1	ru	2	beijing	1	120
2	ruge	1	hebei	1	120
2	ruge	2	beijing	1	120
3	ruye	1	hebei	1	120
3	ruye	2	beijing	1	120
4	rushen	1	hebei	1	120
4	rushen	2	beijing	1	120
1	ru	1	hebei	2	130
1	ru	2	beijing	2	130
2	ruge	1	hebei	2	130
2	ruge	2	beijing	2	130
3	ruye	1	hebei	2	130
3	ruye	2	beijing	2	130
4	rushen	1	hebei	2	130
4	rushen	2	beijing	2	130
1	ru	1	hebei	4	150
1	ru	2	beijing	4	150
2	ruge	1	hebei	4	150
2	ruge	2	beijing	4	150
3	ruye	1	hebei	4	150
3	ruye	2	beijing	4	150
4	rushen	1	hebei	4	150
4	rushen	2	beijing	4	150
1	ru	1	hebei	5	160
1	ru	2	beijing	5	160
2	ruge	1	hebei	5	160
2	ruge	2	beijing	5	160
3	ruye	1	hebei	5	160
3	ruye	2	beijing	5	160
4	rushen	1	hebei	5	160
4	rushen	2	beijing	5	160

 

 

 

有限制条件时:

SELECT * FROM `stuname` nm INNER JOIN `stuaddress` address ON nm.`id`=address.`id` INNER JOIN `stuscore` score ON nm.`id`=score.`id`;

 

id	name	id	address	id	score
1	ru	1	hebei	1	120
2	ruge	2	beijing	2	130

 

 

 

三,另一个实例

SELECT permission_id,permission_name,permission_url,parent_id FROM tbpermissions WHERE permission_id>999999 AND permission_id<10000000 AND permission_id IN(
		SELECT permission_id FROM tbrole_permissions WHERE role_id=(
		SELECT role_id FROM tbuserinfo WHERE user_id='0'));

等价于下面的sql:

SELECT tm.* FROM tbpermissions tm INNER JOIN 
	(SELECT tpm.permission_id FROM tbrole_permissions tpm INNER JOIN  tbuserinfo tu ON tpm.`role_id`=tu.`role_id` AND tu.`user_id`='0') tp
	 ON tm.permission_id>999999 AND tm.permission_id<10000000 AND tm.permission_id IN(tp.`permission_id`);

 

分享到:
评论

相关推荐

    mysql关联查询

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

    Mysql多表联合查询

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

    计算机病毒与防护:MYSQL联合查询上.ppt

    【MySQL联合查询与防护】 MySQL数据库中的联合查询(UNION)是一种强大的操作,它允许将两个或更多SELECT语句的结果合并成一个结果集。在理解联合查询时,我们需要明确几个关键概念: 1. **UNION操作符**:UNION...

    实例讲解MYSQL联合查询

    MySQL是一种广泛使用的开源关系型数据库管理系统,其联合查询(JOIN)功能是数据库操作中的核心部分,用于合并多个数据表中的相关记录,以便进行更复杂的分析和检索。在本实例讲解中,我们将深入探讨MySQL联合查询的...

    MySQL 联合查询案例代码

    MySQL 联合查询案例,需要搭配博主【MySQL】联合查询这篇文章使用,用于初始化数据,搭配文章学习可以充分学会联合查询,建议先学习博主 MySQL 专栏前部分的基础知识,联合查询是在有一定基础后进行学习的,里面的...

    计算机病毒与防护:MYSQL联合查询下.ppt

    【MySQL联合查询与防护】 MySQL联合查询是一种将多个SELECT语句的结果合并成一个结果集的操作。在网络安全领域,尤其在数据库注入攻击中,联合查询常常被利用来非法获取数据库信息。以下将详细介绍联合查询的基本...

    用于oracle,mysql,sqlserver,数据库分页联合查询

    本话题主要聚焦于如何在Oracle、MySQL和SQL Server这三种主流关系型数据库中实现分页联合查询。 首先,我们来看Oracle数据库的分页查询。Oracle使用ROWNUM关键字来实现分页。例如,如果我们想获取第10到20条记录,...

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

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

    mysql多表查询和EXISTS查询性能对比

    NOT IN 是一种常见的排除条件查询方式,在多表关联查询中用于排除特定记录。例如,如果想要找出表A中的记录,但排除那些在表B中存在的记录,则可以使用如下SQL语句: ```sql SELECT * FROM tableA WHERE tableA.id ...

    Mysql联合查询UNION和Order by同时使用报错问题的解决办法

    因此,常常出现这样的错误 代码如下:select * from [IND] where INDID&gt;10unionselect * from [IND] where INDID&lt;9&gt;10 order by INDID descunionselect * from [IND] where INDID&lt;9 order by INDID desc此时就出现...

    mysql多表联合查询的教程

    MySQL 多表联合查询教程 在本教程中,我们将学习 MySQL 中的多表联合查询,包括多表插入和多表更新的操作。多表联合查询是指从多个表中检索数据的操作,这种操作在实际应用中非常常见。 什么是多表联合查询 多表...

    Mysql联合查询UNION和UNION ALL的使用介绍

    本文详细介绍了Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下

    Mysql 行转列,列转行 SQL语句和示例表结构SQL

    在数据库管理中,数据的组织方式对于数据查询和分析至关重要。MySQL 提供了两种转换数据布局的方法:行转列(Pivot)和列转行(Unpivot),这在处理复杂的数据汇总和展示时非常有用。本文将深入探讨这两种转换方法,...

    mysql中or是否走索引详解

    在MySQL数据库中,索引是提高查询性能的关键工具。它们允许数据库系统快速定位和检索数据,而无需遍历整个表。然而,当涉及到`OR`条件时,索引的使用和效率可能会变得复杂。本篇文章将深入探讨在MySQL中`OR`操作符...

    mysql子查询的用法

    在本篇文章中,我们将深入探讨MySQL子查询的用法,包括单行子查询、多行子查询、关联子查询以及它们在实际应用中的示例。 1. 单行子查询 单行子查询返回单个值,常用于WHERE子句中与外部查询的字段进行比较。例如,...

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

    1. **使用自连接和递归联合(RECURSIVE UNION)**:这种方法通过将表与自身连接,并通过递归地应用联合查询来构建层级结构。 2. **利用变量和循环**:这种方法通过在SQL查询中使用变量和循环结构来实现递归查询,...

    MySQL联合索引用法示例

    MySQL联合索引是一种优化查询性能的机制,它允许在多个列上创建单个索引,以便在查询中同时使用这些列时能更快地找到数据。本示例将深入讲解联合索引的概念,并通过实例来展示如何在MySQL中创建和使用联合索引。 ...

    mysql多表联合查询.pdf

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

    mysql查询根据列按条件统计总数

    此类操作通常涉及到`COUNT()`函数与`GROUP BY`语句的结合使用,有时还需要与其他子查询或联合查询(`UNION`)相结合来完成更复杂的统计需求。 #### 核心知识点 1. **基本统计查询**:使用`COUNT()`函数。 2. **...

    mysql多表联合查询

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

Global site tag (gtag.js) - Google Analytics