0

私は2つのテーブル(マスターと子)を持っています

マスターテーブル (人)

PersonID 名前 年齢 SSN

1 サウラブ 12 1234

2 サウラブ 13 1234

3 サウラブ 14 4567

子テーブル (順序)

オーダーID|個人ID|アイテムID|数量

1 1 1 1

2 1 2 1

3 2 1 1

4 2 2 1

5 3 1 1

次の重複除外条件に基づいて、persons テーブル内のすべての重複レコードを削除する必要があります。名前、SSN、オーダーセットが同じ場合、2 人の人物が重複しています。この例では、ID 1 と 2 の人物は、名前 (Saurabh)、SSN (1234)、注文が同じであるため、重複しています。

単一のテーブルで重複排除を実行するのは簡単ですが、親子関係があると効率的な方法が得られません。

4

1 に答える 1

1

私は、以下があなたが探している結果をあなたに与えると信じています. 最初に削除部分なしでクエリを実行し、結果を確認します。

DELETE FROM Person WHERE PersonID IN 
(
  SELECT P.PersonID
  FROM Person AS P
  INNER JOIN [Order] AS O 
  ON P.PersonID = O.PersonID
  WHERE P.PersonID IN 
  (
    SELECT IP.PersonID
    FROM Person AS IP
    INNER JOIN [Order] AS IO 
    ON IP.PersonID = IO.PersonID
    WHERE IP.PersonID <> P.PersonID
    AND IP.Name = P.Name
    AND IP.SSN = P.SSN
    AND O.ItemID = IO.ItemID 
    AND O.Quantity = IO.Quantity
  )
)
于 2013-10-11T19:58:21.080 に答える