在sql服務器基本上我有一個查詢來查找重複表中的一個表。我想下過濾此列表所有出現在一個表,並在第二個表不包含sql顯示重複行丟失從另一個表
得到重複的重複:
select [OBId], COUNT(*) AS dupes
FROM [Broker] b
GROUP BY [OBId]
HAVING (COUNT(*) > 1)
經紀人ID,OBID
和我想所有沒有brokerid此表 第二個表
我試圖做一個子查詢的重複,但我無法弄清楚
在sql服務器基本上我有一個查詢來查找重複表中的一個表。我想下過濾此列表所有出現在一個表,並在第二個表不包含sql顯示重複行丟失從另一個表
得到重複的重複:
select [OBId], COUNT(*) AS dupes
FROM [Broker] b
GROUP BY [OBId]
HAVING (COUNT(*) > 1)
經紀人ID,OBID
和我想所有沒有brokerid此表 第二個表
我試圖做一個子查詢的重複,但我無法弄清楚
如果你只是使用子查詢,並說這
select [OBId],
COUNT(*) AS dupes
FROM [Broker] b
WHERE [OBId] NOT IN (select other_table_id from other_table)
GROUP BY [OBId]
HAVING (COUNT(*) > 1)
你可以用不做它存在於一個子查詢:
SELECT sub.*
FROM
(SELECT [OBId]
, COUNT(*) AS dupes
FROM [Broker] b
GROUP BY [OBId]
HAVING COUNT(*) > 1) sub
WHERE NOT EXISTS
(SELECT 1
FROM SomeSecondTable sst
WHERE sub.OBId = BrokerId);
如果你試圖返回的全套從重複的經紀表中的記錄,並要取消記錄,唐「T在第二個表中,那麼你可以使用此代碼:
SELECT sub.*
FROM [Broker] b
WHERE EXISTS
(SELECT [OBId]
, COUNT(*) AS dupes
FROM [Broker] sb
WHERE b.OBId = sb.OBId
GROUP BY [OBId]
HAVING COUNT(*) > 1)
AND NOT EXISTS
(SELECT 1
FROM SomeSecondTable sst
WHERE b.OBId = BrokerId);
你可以使用一個EXCEPT
條款:
select [OBId]
FROM [Broker] b
GROUP BY [OBId]
HAVING (COUNT(*) > 1)
EXCEPT
select [OBId]
FROM [SecondTable] T2
這是http://stackoverflow.com/questions/19538507/delete-duplicate-records-that-do-not-exist的非常近的副本 - 在其他表 - 我的猜測是,如果你讀了第二個答案,你會得到你需要讓你移動。 – mwigdahl