SQL 表连接查询出现重复列,由此理清LEFT JOIN、INNER JOIN的区别
1、先创建两个临时表,并插入数据
CREATE TABLE #TEMP1
(
ID INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(50)
)
CREATE TABLE #TEMP2
(
ID INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(50)
)
INSERT INTO #TEMP1
( name )
VALUES (
N'A' -- name - nvarchar(50)
),('B')
INSERT INTO #TEMP2
( name )
VALUES (
N'A' -- name - nvarchar(50)
),('B'),('C'),('B'),('C')
2、
#TEMP1 记录如下
ID name
1 A
2 B
#TEMP2 记录如下
ID name
1 A
2 B
3 C
4 B
5 C
3、内连接 记录如下
SELECT T1.ID,T1.name FROM #TEMP1 AS T1 INNER JOIN #TEMP2 AS T2 ON T1.name=T2.name
ID name
1 A
2 B
2 B
4、左连接 记录如下
SELECT T1.ID,T1.name FROM #TEMP1 AS T1 LEFT JOIN #TEMP2 AS T2 ON T1.name=T2.name
ID name
1 A
2 B
2 B
结果说明:
1、Left Join(左联接)
以左表为中心,返回左表中符合条件的所有记录以及右表中联结字段相等的记录——当右表中无相应联接记录时,返回空值。
2、Inner Join(等值连接)
返回两个表中联结字段相等的行。
注意:如出现重复结果列,要从出现重复源头表的列,开始过滤!
先找出重复的列
SELECT name FROM #TEMP2 GROUP BY name HAVING COUNT(1)>1
再用EXISTS 和NOT IN UNION ALL
SQL 表连接查询出现重复列,由此理清LEFT JOIN、INNER JOIN的区别的更多相关文章
- SQL表连接查询(inner join、full join、left join、right join)
SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...
- SQL表连接查询
SQL表连接查询(inner join.full join.left join.right join) 表的数据有: 一.内连接-inner jion : 最常见的连接查询可能是这样,查出学生的名字和 ...
- SQL表连接查询inner join left join right join full join ...
一.最常见的连接查询 select s.name,m.mark from student s,mark m where s.id=m.studentid. 二.内连接-inner join sel ...
- SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. JOIN: 如果表中有至少一个匹配,则返回行(join=inner join) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有 ...
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所 ...
- SQL多表连接查询以及mysql数据库、sqlserver数据库常见不同点
mysql数据库表及数据准备语句: USE test; DROP TABLE IF EXISTS `teacher_table`; DROP TABLE IF EXISTS `student_tabl ...
- oracle(sql)基础篇系列(二)——多表连接查询、子查询、视图
多表连接查询 内连接(inner join) 目的:将多张表中能通过链接谓词或者链接运算符连接起来的数据查询出来. 等值连接(join...on(...=...)) --选出雇员的名字和雇员所在的部门 ...
- 010.简单查询、分组统计查询、多表连接查询(sql实例)
-------------------------------------day3------------ --添加多行数据:------INSERT [INTO] 表名 [(列的列表)] --SEL ...
- SQL多表连接查询(详细实例)
转载博客:joeleo博客(http://www.xker.com/page/e2012/0708/117368.html) 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:stud ...
随机推荐
- JNI开发的常见错误
1. 写错了load的library java.lang.UnsatisfiedLinkError: Couldn't load hell0: findLibrary returned null 2. ...
- position导致Safari工具栏不自动隐藏
一般情况下,移动端网页在上滑的时候,Safari的工具栏会自动隐藏掉,下滑的时候又会出现. 但是,如果可滑动区域的最外层box写了position:absolute,就不会自动隐藏了. 例如像这样的页 ...
- ERwin入门
1.菜单介绍 2.选择建模语言符号
- Servlet学习:实现分页效果的方法
分页的算法:需要定义四个变量,它们有各自的用处int pageSize:每页显示多少条记录int pageNow:希望显示第几页int pageCount:一共有多少页int rowCount:一共有 ...
- Atomikos实现多数据源的事物管理
之前试过使用Spring动态切换数据库,通过继承AbstractRoutingDataSource重写determineCurrentLookupKey()方法,来决定使用那个数据库.在开启事务之前, ...
- jQuery中json对象与json字符串互换
json字符串转json对象:jQuery.parseJSON(jsonStr); json对象转json字符串:JSON.stringify(jsonObj); 根据“|”把字符串变成数组.spli ...
- 安装第三方RPM仓库
1.安装RepoForge源: CentOS 6.x [root@localhost /]# yum install http://pkgs.repoforge.org/rpmforge-releas ...
- broadcasting Theano vs. Numpy
broadcasting Theano vs. Numpy broadcast mechanism allows a scalar may be added to a matrix, a vector ...
- Net中对Object的定义
如果你问一个.Net程序员什么是Object,他可能会信誓旦旦的告诉你"Object还不简单吗,就是所有类型的基类"这个答案是对的,但是不足以说明Object真正是什么 好在HTM ...
- 个人整理的一些web前端面试题
1.一个网页从开始请求到最终显示的完整过程? 获取输入网址 将网址解析为ip地址 建立tcp连接 发送http请求 返回响应 解析并显示. 2.简述对CSS盒子模型的理解? width=margin- ...