在数据库的联合查询里面,通常的查询是取交集。例如: select a.id, a.name, b.name from t1 a, t2 b where a.id=b.id; 除了相交的结果被丢弃了。有些时候,我们希望保留a中所有的结果,同时增加b中的数据。这种情况就需要使用LEFT JOIN。
贴一些例子:
表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
实验如下:
1.left join
sql语句如下:
select * from A
left join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
5 a20050115 NULL NULL
(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
2.right join
sql语句如下:
select * from A
right join B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
NULL NULL 8 2006032408
(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
3.inner join
sql语句如下:
select * from A
innerjoin B
on A.aID = B.bID
结果如下:
aID aNum bID bName
1 a20050111 1 2006032401
2 a20050112 2 2006032402
3 a20050113 3 2006032403
4 a20050114 4 2006032404
结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
-----------------[以下为网上的一点资料]------------------
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。
语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2
说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。
使用left join一个应用就是当需要查询集合的差集,例如假设集合a, b, 他们的交集是c,现在需要检索出集合a-b。那么处理的方法如下:
select a.* from a left join b on a.id=b.id where b.id is null;
分享到:
相关推荐
3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在MySQL中,子查询通常需要移到FROM或WHERE子句中。 4. **游标**:Oracle SQL支持游标,MySQL则不直接支持,需要使用存储过程或临时表来实现类似...
10. SQL语句优化的技术手段:技术手段包括但不限于使用子查询优化、使用JOIN代替子查询、避免SELECT *、使用更有效的查询方法(如IN代替OR)、利用数据库提供的存储过程和函数减少网络往返次数等。 11. 经验与实践...
在 MySQL 中,连接查询使用 JOIN 语句。例如,查询 JSJ 系的学生选修的课程号: ```sql SELECT cno FROM student JOIN sc ON student.sno = sc.sno JOIN course ON sc.cno = course.cno WHERE student.sdept = 'JSJ'...
在处理多表查询时,JOIN语句非常有用: 1. **INNER JOIN**:返回两个表中匹配的行: ```sql SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column; ``` 2. **LEFT JOIN (或 LEFT OUTER...
此外,使用straight_join代替普通的JOIN语句可以强制MySQL使用指定的表作为驱动表进行查询,这样可以更明确地控制查询计划,有助于分析和优化Join操作。这种控制有时候能够帮助DBA找到更高效的查询路径。 在实际...
MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。...这些SQL语句都是MySQL中常用的语句,掌握这些语句可以帮助你更好地管理和操作数据库。
在本教程中,我们将深入探讨MySQL中的多种查询语句,包括多表查询、视图、数据库管理、SELECT语句以及创建表等核心概念。 首先,让我们从多表查询开始。在实际应用中,往往需要从多个相关表中获取信息,这就需要...
下面将详细介绍MySQL中的SQL语句及其生成器的相关知识。 1. SQL基础概念 SQL,全称为结构化查询语言,是用于创建、查询、更新和删除数据库中数据的标准语言。它分为DQL(查询语言)、DML(数据操纵语言)、DDL...
在本篇文章中,我们将详细介绍 MySQL 语句大全的基本语法和高级查询运算词。 一、基本语法 1. 创建数据库:CREATE DATABASE database-name create database 语句用于创建一个新的数据库。 2. 删除数据库:DROP ...
MySQL中的JOIN语句是数据库操作中的重要组成部分,它允许我们基于两个或更多表之间的关联字段来合并数据。本文将深入探讨JOIN的基本使用方法以及字段字符集编码如何影响性能。 JOIN语句的基础在于它能根据两个表中...
首先,我们要理解的是SQL语言中的“JOIN”操作,它是用来联接两个或更多表的查询,以便基于这些表之间的相关列进行操作。在删除场景中,可以使用`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN` 或 `FULL OUTER JOIN` 来...
在多表查询中,JOIN操作可能导致性能瓶颈。通过合理使用内连接(INNER JOIN)、外连接(OUTER JOIN)和交叉连接(CROSS JOIN),并结合索引来优化JOIN条件,可以有效降低查询复杂性。 此外,存储过程和视图也是SQL优化的...
本实验训练涵盖了 MySQL 数据查询操作的多个方面,包括单表查询、多条件查询、聚合函数查询、内连接查询、外连接查询、复合查询等。通过对实验内容的分析,可以总结出以下知识点: 1. 单表查询: * 了解如何使用 ...
"Effective MySQL之SQL语句最优化"这本书深入探讨了如何通过优化SQL查询来提高MySQL数据库的效率。以下是基于这个主题的一些关键知识点: 1. **索引优化**:索引是数据库性能提升的核心。书中的内容可能涵盖如何...
MySql,多表联合查询加AS语句,多余的就不说了,自己看,绝对简单!
在MySQL查询语句过程和EXPLAIN语句基本概念及其优化中介绍了EXPLAIN语句,并举了一个慢查询例子: 可以看到上述的查询需要检查1万多记录,并且使用了临时表和filesort排序,这样的查询在用户数快速增长后将成为噩梦...
在这个“mysql语句集合包括模糊查询索引函数”中,我们将深入探讨SQL中的关键概念,特别是与模糊查询、索引和函数相关的知识。 首先,SQL语句主要分为四大类:SELECT(查询)、INSERT(插入)、UPDATE(更新)和...
MySQL是世界上最流行的关系型数据库管理系统之一,用于存储和管理数据。...在实际应用中,根据具体需求,可能还需要学习更多复杂的SQL语句,如JOIN操作、索引创建、触发器、存储过程等,以便更高效地管理数据。
MySQL查询语句是数据库管理中不可或缺的部分,它用于从MySQL数据库中检索数据。这份"MySQL查询语句汇总.zip"文件提供了全面的学习资料,包括相关的文档说明,非常适合对MySQL查询语句进行深入学习。 首先,我们要...