两个表:
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关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...
MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!
【MySQL联合查询与防护】 MySQL数据库中的联合查询(UNION)是一种强大的操作,它允许将两个或更多SELECT语句的结果合并成一个结果集。在理解联合查询时,我们需要明确几个关键概念: 1. **UNION操作符**:UNION...
MySQL是一种广泛使用的开源关系型数据库管理系统,其联合查询(JOIN)功能是数据库操作中的核心部分,用于合并多个数据表中的相关记录,以便进行更复杂的分析和检索。在本实例讲解中,我们将深入探讨MySQL联合查询的...
MySQL 联合查询案例,需要搭配博主【MySQL】联合查询这篇文章使用,用于初始化数据,搭配文章学习可以充分学会联合查询,建议先学习博主 MySQL 专栏前部分的基础知识,联合查询是在有一定基础后进行学习的,里面的...
【MySQL联合查询与防护】 MySQL联合查询是一种将多个SELECT语句的结果合并成一个结果集的操作。在网络安全领域,尤其在数据库注入攻击中,联合查询常常被利用来非法获取数据库信息。以下将详细介绍联合查询的基本...
本话题主要聚焦于如何在Oracle、MySQL和SQL Server这三种主流关系型数据库中实现分页联合查询。 首先,我们来看Oracle数据库的分页查询。Oracle使用ROWNUM关键字来实现分页。例如,如果我们想获取第10到20条记录,...
本文实例讲述了MySQL 多表关联一对多查询实现取最新一条数据的方法。分享给大家供大家参考,具体如下: MySQL 多表关联一对多查询取最新的一条数据 遇到的问题 多表关联一对多查询取最新的一条数据,数据出现重复 ...
NOT IN 是一种常见的排除条件查询方式,在多表关联查询中用于排除特定记录。例如,如果想要找出表A中的记录,但排除那些在表B中存在的记录,则可以使用如下SQL语句: ```sql SELECT * FROM tableA WHERE tableA.id ...
因此,常常出现这样的错误 代码如下:select * from [IND] where INDID>10unionselect * from [IND] where INDID<9>10 order by INDID descunionselect * from [IND] where INDID<9 order by INDID desc此时就出现...
MySQL 多表联合查询教程 在本教程中,我们将学习 MySQL 中的多表联合查询,包括多表插入和多表更新的操作。多表联合查询是指从多个表中检索数据的操作,这种操作在实际应用中非常常见。 什么是多表联合查询 多表...
本文详细介绍了Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下
在数据库管理中,数据的组织方式对于数据查询和分析至关重要。MySQL 提供了两种转换数据布局的方法:行转列(Pivot)和列转行(Unpivot),这在处理复杂的数据汇总和展示时非常有用。本文将深入探讨这两种转换方法,...
在MySQL数据库中,索引是提高查询性能的关键工具。它们允许数据库系统快速定位和检索数据,而无需遍历整个表。然而,当涉及到`OR`条件时,索引的使用和效率可能会变得复杂。本篇文章将深入探讨在MySQL中`OR`操作符...
在本篇文章中,我们将深入探讨MySQL子查询的用法,包括单行子查询、多行子查询、关联子查询以及它们在实际应用中的示例。 1. 单行子查询 单行子查询返回单个值,常用于WHERE子句中与外部查询的字段进行比较。例如,...
1. **使用自连接和递归联合(RECURSIVE UNION)**:这种方法通过将表与自身连接,并通过递归地应用联合查询来构建层级结构。 2. **利用变量和循环**:这种方法通过在SQL查询中使用变量和循环结构来实现递归查询,...
MySQL联合索引是一种优化查询性能的机制,它允许在多个列上创建单个索引,以便在查询中同时使用这些列时能更快地找到数据。本示例将深入讲解联合索引的概念,并通过实例来展示如何在MySQL中创建和使用联合索引。 ...
在给定的文件中,我们可以看到有关MySQL多表联合查询的知识点。首先,文件包含了创建和操作MySQL数据库表的SQL语句,接着是使用INSERT语句向表中插入数据的示例,最后是一些使用PHP通过MySQL扩展连接数据库进行操作...
此类操作通常涉及到`COUNT()`函数与`GROUP BY`语句的结合使用,有时还需要与其他子查询或联合查询(`UNION`)相结合来完成更复杂的统计需求。 #### 核心知识点 1. **基本统计查询**:使用`COUNT()`函数。 2. **...
mysql多表联合查询 表连接的约束条件 MySQL如何优化LEFT JOIN和RIGHT JOIN