2015-08-05 3 views

Répondre

0

Est-ce ce que vous cherchez?

SELECT * 
FROM Table1 
CROSS JOIN Table2 
WHERE Table1.PrimaryKey <> Table2.PrimaryKey 
0

Pas exactement sûr si vous cherchez à supprimer les enregistrements des deux tables chaque fois qu'il y a des doublons, mais voici comment je le ferais.

CREATE TABLE #TableA 
(
    PK_A INT IDENTITY(1,1) NOT NULL, 
    Field1 INT, 
    Field2 VARCHAR(20), 
    Field3 BIT 
) 
INSERT INTO #TableA (Field1, Field2, Field3) VALUES (1, 'A', 0), (1, 'B', 1), (2, 'C', 1), (3, 'C', 0) 

CREATE TABLE #TableB 
(
    PK_B INT IDENTITY(10,10) NOT NULL, 
    Field1 INT, 
    Field2 VARCHAR(20), 
    Field3 BIT 
) 
INSERT INTO #TableB (Field1, Field2, Field3) VALUES (1, 'A', 1), (1, 'B', 1), (2, 'C', 1), (3, 'C', 1) 

SELECT * FROM #TableA; 
SELECT * FROM #TableB; 

DECLARE @pks AS TABLE 
(
    PK_A INT, 
    PK_B INT 
) 

INSERT INTO @pks (PK_A, PK_B) 
SELECT PK_A, PK_B 
FROM #TableA INNER JOIN #TableB 
ON #TableA.Field1 = #TableB.Field1 
    AND #TableA.Field2 = #TableB.Field2 
    AND #TableA.Field3 = #TableB.Field3 

DELETE FROM #TableA WHERE PK_A IN (SELECT PK_A FROM @pks) 
DELETE FROM #TableB WHERE PK_B IN (SELECT PK_B FROM @pks) 

SELECT * FROM #TableA; 
SELECT * FROM #TableB; 

DROP TABLE #TableA; 
DROP TABLE #TableB;