sql 左连接和右连接的使用技巧(left join and right join)

下面给一个例子进行说明:


表a

aid adate
1 a1
2 a2
3 a3

表b

bid bdate
1 b1
2 b2
4 b4

left join:

select * from a left join b on a.aid = b.bid

首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:

1 a1 b1
2 a2 b2
3 a3 空字符

同样的也有right join

指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:

1 a1 b1
2 a2 b2
4 空字符 b4

呵呵,大家千万注意,左右连接跟两个表a,b相连接,要取出id相同的字段数据是不一样的,
select * from a ,b where a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2

这里顺便说明下union 、union all

union是连接两个表的数据并排除所有重复的数据。

而union all不排除重复的数据。

下面是你可能感兴趣的文章:
超详细mysql left join,right join,inner join用法分析
SQL 外链接操作小结inner join left join right join
SQL中的left join right join

(0)

相关推荐

  • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍

    不知道有没有人碰到过这样恶心的问题:两张表连接查询并limit,SQL效率很高,但是加上order by以后,语句的执行时间变的巨长,效率巨低. 情况是这么一个情况:现在有两张表,team表和people表,每个people属于一个team,people中有个字段team_id. 下面给出建表语句: 复制代码 代码如下: create table t_team ( id int primary key, tname varchar(100) ); create table t_people (

  • SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍

    1. a. 并集UNION SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2 b. 交集JOIN SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name c. 差集NOT IN SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2) d. 笛卡尔积 SELECT

  • MySQL的LEFT JOIN表连接的进阶学习教程

    LEFT JOIN的主表 这里所说的主表是指在连接查询里MySQL以哪个表为主进行查询.比如说在LEFT JOIN查询里,一般来说左表就是主表,但这只是经验之谈,很多时候经验主义是靠不住的,为了说明问题,先来个例子,建两个演示用的表categories和posts: CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(15) NOT NULL

  • MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

    LEFT JOIN 语法用法与实例 MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT JOIN 基本语法如下: ... FROM table1 LEFT JOIN table2 ON condition ... MySQL LEFT JOIN 用法实例 下面是两个原始数据表: article 文章表: user 用户表: 我们列出所有的文章及对应的所属用户,即使没有用户的文章也列

  • MSSQL内连接inner join查询方法

    今天项目遇到一直不知道怎么解决,在经典网友以及无忧网友的热心帮助下,解决. 比如A表: sid    sname 1     kkkkkkd 2     ahuinan B表 id    smoney   sid 1        100      1 2        200      1    3        150      2 希望得到的结果: sid   sname   smoney 1    kkkkkkd  300(100+200) 2   ahuinan   150 参考: s

  • MSSQL内外连接(INNER JOIN)语句详解

    在之前,我对MSSQL中的内连接和外连接所得出的数据集不是很清楚.这几天重新温习了一下SQL的书本,现在的思路应该是很清楚了,现在把自己的理解发出来给大家温习下.希望和我一样对SQL的连接语句不太理解的朋友能够有所帮助.(发这么菜的教程,各位大大们别笑话偶了,呵:D ) 有两个表A和表B.表A结构如下:Aid:int:标识种子,主键,自增IDAname:varchar 数据情况,即用select * from A出来的记录情况如下图1所示: 图1:A表数据 表B结构如下:Bid:int:标识种子

  • 在MySQL中使用JOIN语句进行连接操作的详细教程

    到目前,我们已经学习了从一个表中获取数据.这是简单的需要,但在大多数现实MySQL的使用,经常需要将数据从多个表中的一个单一的查询. 可以使用多个表中的单一SQL查询.在MySQL中联接(join)行为是指两个或多个表到一个表中可以使用连接在SELECT,UPDATE和DELETE语句中加入MySQL表.我们将看到一个例子LEFT JOIN简单的MySQL连接. 在命令提示符使用联接: 假设我们两个表的教程tcount_tbl和tutorials_tbl的完整列表如下: 例子: 试试下面的例子:

  • SQL JOIN 连接详细介绍及简单使用实例

    SQL JOIN 连接 SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段. 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN). SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行. 让我们看看选自 "Orders" 表的数据: OrderID CustomerID OrderDate 10308 2 1996-09-18 10309 37 1996-09-19 10310 77 1996-09-20 然后

  • mysql 左连接、右连接和内连接

    脚本如下: drop table table1; CREATE TABLE `andrew`.`table1` ( `name` VARCHAR(32) NOT NULL, `city` VARCHAR(32) NOT NULL ) ENGINE = MyISAM; insert into TABLE1(name, city) values ('Person A', 'BJ'); insert into TABLE1(name, city) values ('Person B', 'BJ');

  • SQL左连接和右连接原理及实例解析

    两张表,A表中的记录B表中不一定有. 左连接:关注左边,右边没有就为空. 右连接:关注右边,左边没有就为空. 内连接:返回交集 例如: student表s id name age class_id 1 yang 22 1 2 su 20 1 3 fan 20 2 4 li 30 2 5 luo 22 class表c id name total 1 大一 30 2 大二 15 3 大三 40 在上面的表中,s表中的5号记录在c表中是找不到数据的. 1.左连接,left join左边为主要表,次表没

  • mysql连接查询(左连接,右连接,内连接)

    一.mysql常用连接 INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录. mysql> select * from name_address; +----------+------+----+ | address | name | id | +----------+------

  • sql 左连接和右连接的使用技巧(left join and right join)

    下面给一个例子进行说明: 例表a aid adate 1 a1 2 a2 3 a3 表b bid bdate 1 b1 2 b2 4 b4 left join: select * from a left join b on a.aid = b.bid 首先取出a表中所有数据,然后再加上与a,b匹配的的数据 此时的取出的是: 1 a1 b1 2 a2 b2 3 a3 空字符 同样的也有right join 指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据 此时的取出的是: 1 a1 b

  • 详解MySql自连接,外连接,内连接 ,左连接,右连接

    目录 基础介绍 1,自连接 2,外连接 3,左连接 4,右连接 具体实战 1,左连接 2,右连接 3,自连接 4,内连接 基础介绍 今天我跟大家把我理解的这一块全面的介绍下,配有sql语句送给大家.首先来给大家做个这一块的介绍: 1,自连接 说到底就是多张表都是同一张表添加一定条件的限制出来的数据.这简单理解吧.比如说 ....... where a.age = a.num; 搞这么复杂干啥呢. 2,外连接 外连接包括左连接,右连接.直接看左连接和右连接就行了 3,左连接 简单点来说就是最后的结

  • MYSQL 左连接右连接和内连接的详解及区别

    MYSQL 左连接右连接和内连接的区别,这里就对这些概念经过一个实例,讲解清楚. 代码如下: drop table table1; CREATE TABLE `andrew`.`table1` ( `name` VARCHAR(32) NOT NULL, `city` VARCHAR(32) NOT NULL ) ENGINE = MyISAM; insert into TABLE1(name, city) values ('Person A', 'BJ'); insert into TABLE

  • 数据库中的左连接(left join)和右连接(right join)区别

    Left Join / Right Join /inner join相关 关于左连接和右连接总结性的一句话: 左连接 where只影向右表,右连接where只影响左表. Left Join select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID 左连接后的检索结果是显示tbl1的所有数据和tbl2 中满足where 条件的数据. 简言之 Left Join影响到的是右边的表 Right Join select * from tbl1 R

  • 数据库 左连接 右连接 全连接用法小结

    连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来.所以,在Transact-SQL中推荐使用这种方法. SQL-92标准所定义的FROM子句的连接语法格式为: FROM join_table join_type join_table  [ON (join_condition)] 其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做

  • SQL 四种连接-左外连接、右外连接、内连接、全连接详解

    SQL的四种连接-左外连接.右外连接.内连接.全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果. 联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行. 联接可分为以下几类: 1.内联接(典型的联接运算,使用像 =  或 <> 之类

  • 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行.       2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接.     在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定:     1)LEFT  JOIN或LEFT OUTER JOIN     左向外联接的结果集包括  LEF

随机推荐