`

mysql中JOIN语句查询

阅读更多

在数据库的联合查询里面,通常的查询是取交集。例如: 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;

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在MySQL中,子查询通常需要移到FROM或WHERE子句中。 4. **游标**:Oracle SQL支持游标,MySQL则不直接支持,需要使用存储过程或临时表来实现类似...

    Effective MySQL之SQL语句最优化.pdf

    10. SQL语句优化的技术手段:技术手段包括但不限于使用子查询优化、使用JOIN代替子查询、避免SELECT *、使用更有效的查询方法(如IN代替OR)、利用数据库提供的存储过程和函数减少网络往返次数等。 11. 经验与实践...

    MySQL SQL语句练习题及答案

    在 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'...

    mysql所有的查询语句详解

    在处理多表查询时,JOIN语句非常有用: 1. **INNER JOIN**:返回两个表中匹配的行: ```sql SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column; ``` 2. **LEFT JOIN (或 LEFT OUTER...

    mysql Join使用以及优化

    此外,使用straight_join代替普通的JOIN语句可以强制MySQL使用指定的表作为驱动表进行查询,这样可以更明确地控制查询计划,有助于分析和优化Join操作。这种控制有时候能够帮助DBA找到更高效的查询路径。 在实际...

    Mysql常用SQL语句

    MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。...这些SQL语句都是MySQL中常用的语句,掌握这些语句可以帮助你更好地管理和操作数据库。

    mysql各种语句多表查询+ mysql视图 mysql数据库管理+ select语句+ 创建

    在本教程中,我们将深入探讨MySQL中的多种查询语句,包括多表查询、视图、数据库管理、SELECT语句以及创建表等核心概念。 首先,让我们从多表查询开始。在实际应用中,往往需要从多个相关表中获取信息,这就需要...

    MySQL常用sql语句生成器

    下面将详细介绍MySQL中的SQL语句及其生成器的相关知识。 1. SQL基础概念 SQL,全称为结构化查询语言,是用于创建、查询、更新和删除数据库中数据的标准语言。它分为DQL(查询语言)、DML(数据操纵语言)、DDL...

    mysql 语句大全

    在本篇文章中,我们将详细介绍 MySQL 语句大全的基本语法和高级查询运算词。 一、基本语法 1. 创建数据库:CREATE DATABASE database-name create database 语句用于创建一个新的数据库。 2. 删除数据库:DROP ...

    MySQL中join语句的基本使用教程及其字段对性能的影响

    MySQL中的JOIN语句是数据库操作中的重要组成部分,它允许我们基于两个或更多表之间的关联字段来合并数据。本文将深入探讨JOIN的基本使用方法以及字段字符集编码如何影响性能。 JOIN语句的基础在于它能根据两个表中...

    mysql 一条语句删除多表数据

    首先,我们要理解的是SQL语言中的“JOIN”操作,它是用来联接两个或更多表的查询,以便基于这些表之间的相关列进行操作。在删除场景中,可以使用`INNER JOIN`、`LEFT JOIN`、`RIGHT JOIN` 或 `FULL OUTER JOIN` 来...

    《Effective MySQL之SQL语句最优化》手册

    在多表查询中,JOIN操作可能导致性能瓶颈。通过合理使用内连接(INNER JOIN)、外连接(OUTER JOIN)和交叉连接(CROSS JOIN),并结合索引来优化JOIN条件,可以有效降低查询复杂性。 此外,存储过程和视图也是SQL优化的...

    mysql数据查询操作-实验训练2.docx

    本实验训练涵盖了 MySQL 数据查询操作的多个方面,包括单表查询、多条件查询、聚合函数查询、内连接查询、外连接查询、复合查询等。通过对实验内容的分析,可以总结出以下知识点: 1. 单表查询: * 了解如何使用 ...

    Effective MySQL之SQL语句最优化

    "Effective MySQL之SQL语句最优化"这本书深入探讨了如何通过优化SQL查询来提高MySQL数据库的效率。以下是基于这个主题的一些关键知识点: 1. **索引优化**:索引是数据库性能提升的核心。书中的内容可能涵盖如何...

    Mysql多表联合查询

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

    MySQL中(JOIN/ORDER BY)语句的查询过程及优化方法

    在MySQL查询语句过程和EXPLAIN语句基本概念及其优化中介绍了EXPLAIN语句,并举了一个慢查询例子: 可以看到上述的查询需要检查1万多记录,并且使用了临时表和filesort排序,这样的查询在用户数快速增长后将成为噩梦...

    mysql语句集合包括模糊查询索引函数

    在这个“mysql语句集合包括模糊查询索引函数”中,我们将深入探讨SQL中的关键概念,特别是与模糊查询、索引和函数相关的知识。 首先,SQL语句主要分为四大类:SELECT(查询)、INSERT(插入)、UPDATE(更新)和...

    MySQL操作命令语句

    MySQL是世界上最流行的关系型数据库管理系统之一,用于存储和管理数据。...在实际应用中,根据具体需求,可能还需要学习更多复杂的SQL语句,如JOIN操作、索引创建、触发器、存储过程等,以便更高效地管理数据。

    MySQL查询语句汇总.zip

    MySQL查询语句是数据库管理中不可或缺的部分,它用于从MySQL数据库中检索数据。这份"MySQL查询语句汇总.zip"文件提供了全面的学习资料,包括相关的文档说明,非常适合对MySQL查询语句进行深入学习。 首先,我们要...

Global site tag (gtag.js) - Google Analytics