SQL表连接查询出现重复列,由此理清LEFTJOIN、INNERJOIN
的区别
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
sql left join 多表连接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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论