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