数据库基础之左连接

  左外连接就是在等值连接的基础上加上主表中的未匹配数据。

  今天下午处理一个SQL,通过left outer join(so as right left outer join)的表的关联方式. 看到这种语法,直觉上反映查询结果的条数应该是Where之后主表返回的记录数(下将Where描述前置略去),直到今天下午写了一个SQL语句,返回的记录数表总表的比总表的还要多.呐尼!

  觉得有点不可接受,why?参考资料也没反应整明白是为什么,查找了半天资料,也没明白所以然。

  于是拉旁边的哥们讨论一下,哥们看了一下说,有无考虑过子表记录有重复的情况!瞬间明白了....

  大概齐也就是这么个事:

CREATE TABLE a
(
 A INT
)

CREATE TABLE ab
(
 B INT
)

INSERT INTO a VALUES(1);
INSERT INTO a VALUES(2);

INSERT INTO ab VALUES(1);
INSERT INTO ab VALUES(1);
INSERT INTO ab VALUES(1);

SELECT * FROM a

SELECT * FROM a LEFT OUTER JOIN  ab
ON (a.a=ab.b)

查询的结果为: 

  

1 1 1
2 1 1
3 1 1
4 2

记录这个事情的主要目的主要是为了说明:在工作的过程中,第一反应的不一定是对的,而当我们自己深陷其中的时候不妨找个局外人帮我们处理一下。是所谓旁观者清,^_^。在讨论的时候还应注意只客观描述问题,尽量不要把小伙伴们也拉到自己的思维陷井中。

连接的参考资料:http://liuzidong.iteye.com/blog/892319

时间: 2024-10-29 10:46:12

数据库基础之左连接的相关文章

数据库中的左连接和右连接的区别

数据库中的左连接和右连接的区别     今天,别人问我一个问题:数据库中的左连接和右连接有什么区别?如果有A,B两张表,A表有3条数据,B表有4条数据,通过左连接和右连接,查询出的数据条数最少是多少条?最多是多少条?     我被这个问题问住了,后来我去问了数据库开发人员,结果结果各种各样:     a 最大12  最小0     b 最大12  最小未知     c 最大未知 最小为3     d 最大12   最小为3     e 不清楚 1.说明 (1)左连接:只要左边表中有记录,数据就能

数据库中的左连接(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 Rig

Oracle数据库中的左连接

在SQL的左连接当中 left join on 后可以添加多个条件,在项目开发过程中发现如下规则. select * from A left join B on  A.id=B.id and 1<>1; 对于这条语句大家认为查询结果是什么,想象中应当查询到零条记录,但实际上on后面的任何条件都不会影响查询结果. 所以对于连接当中的过滤条件应当放在where语句的后面.

c# 数据库基础(将连接字符串写到配置文件中)

数据库 操作步骤 一,添加一个配置文件 内容 <?xml version="1.0" encoding="utf-8" ?> <configuration>   <connectionStrings>     <add name="dbConnStr" connectionString="Data Source=127.0.0.1;Initial Catalog=OrderDB;User ID=

mysql数据库中实现内连接、左连接、右连接

原文:http://www.cnblogs.com/xwdreamer/archive/2010/12/15/2297058.html 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把对应数据查出来 首先创建数据库中的表,数据库代码如下: /* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50150 Source Host : localhost:3306 S

【转】mysql数据库中实现内连接、左连接、右连接

[转]mysql数据库中实现内连接.左连接.右连接 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把对应数据查出来 首先创建数据库中的表,数据库代码如下: /* Navicat MySQL Data Transfer Source Server : localhost_3306 Source Server Version : 50150 Source Host : localhost:3306 Source Database : store Target Server Type

数据库的左连接,右连接,内链接:

先建立数据库,代码如下: create database if not exists "emp"; use emp; drop table if exists "dept"; create table dept( `depid` varchar(50) NOT NULL,    `deptname` varchar(100) default NULL,  PRIMARY KEY  (`depid`) ) engine=innodb default charset=u

数据库左连接left join、右连接right join、内连接inner join on 及 where条件查询的区别

join on 与 where 条件的执行先后顺序: join on 条件先执行,where条件后执行:join on的条件在连接表时过滤,而where则是在生成中间表后对临时表过滤 left join.right join.full join.inner join区别: left join:以左表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对左表无效 right join:以右表为基准,根据on条件过滤连接生成临时表,on后面的过滤条件对右表无效 full join:以左表为基准

php基础编程-php连接mysql数据库-mysqli的简单使用

很多php小白在学习完php基础后,或多或少要接触到数据库的使用.而mysql数据库是你最好的选择,本文就mysql来为大家介绍php如何连接到数据库. PHP MySQLi = PHP MySQL Improved! MySQLi 函数允许您访问 MySQL 数据库服务器. 我简单的把php通过mysqli来连接mysql服务器分为5个步骤: 创建mysql连接 编辑sql语句,并执行返回结果 将返回的结果转为可以处理的数据结构,例如数组 释放本次查询的结果 释放本次连接 下面用代码向大家演示