2

重複を削除したいのですが、重複として表示されません。これを削除して1つだけ残すのに役立つクエリはありますか?

ここに画像の説明を入力

4

2 に答える 2

2

このクエリは正規化された値 (すべて varchar の場合) を生成し、重複をチェックできるようになりました

select 
    [someId], 
    case 
       when reg_num < driver_name then reg_num + driver_name 
                                  else driver_name + reg_num 
    end as combination
于 2013-11-05T07:21:49.017 に答える
0

このようなものは、ソートされた順序で 2 つのフィールドで行をグループ化し、1 つを除いてすべて削除します。両方のフィールドが一致する必要があり、TableId という名前の主キーがあると仮定しています。

DELETE
    T
FROM
    [Table] T
JOIN (
    SELECT
        TableId,
        [Name],
        ROW_NUMBER() OVER ( PARTITION BY [Name] ORDER BY TableId DESC ) RowId
    FROM (
        SELECT
            TableId,
            Reg_Num + '|' + Driver_Name AS [Name]
        FROM
            [Table]
        WHERE
            Reg_Num <= Driver_Name
        UNION
        SELECT
            TableId,
            Driver_Name + '|' + Reg_Num AS [Name]
        FROM
            [Table]
        WHERE
            Driver_Name < Reg_Num
        ) Y
    ) X ON
        X.TableId = T.TableID
WHERE
    RowId > 1 
于 2013-11-05T07:39:54.120 に答える