sql >> データベース >  >> RDS >> Sqlserver

キーによって重複しているが、すべての列で重複していない行を見つける方法は?

    D がすべて等しく、C の少なくとも 1 つが等しくないと言って、テーブル自体を結合することでそれを行うことができます。

    CREATE TABLE #Source (
        D1 VARCHAR(2),
        D2 VARCHAR(2),
        D3 VARCHAR(2),
        C4 VARCHAR(2),
        C5 VARCHAR(2),
        C6 VARCHAR(2) );
    
    INSERT INTO #Source VALUES ('A', 'B', 'C', 'X1', 'X2', 'X3');
    INSERT INTO #Source VALUES ('A', 'B', 'C', 'X1', 'X2', 'X4');
    INSERT INTO #Source VALUES ('A', 'B', 'D', 'X1', 'X2', 'X3');
    INSERT INTO #Source VALUES ('A', 'B', 'D', 'X1', 'X2', 'X3');
    
    SELECT S1.D1, S1.D2, S1.D3, S1.C4 C4_1, S2.C4 C4_2, S1.C5 C5_1, S2.C5 C5_2, S1.C6 C6_1, S2.C6 C6_2
    FROM
        #Source S1
                INNER JOIN
        #Source S2
                ON
            (       S1.D1 = S2.D1 
                AND S1.D2 = S2.D2
                AND S1.D3 = S2.D3
                AND (   S1.C4 <> S2.C4
                     OR S1.C5 <> S2.C5
                     OR S1.C6 <> S2.C6
                     )
            );
    
    DROP TABLE #Source;
      

    次の結果が得られます:

    <前>D1 D2 D3 C4_1 C4_2 C5_1 C5_2 C6_1 C6_2 ---- ---- ---- ---- ---- ---- ---- ---- ---- A B C X1 X1 X2 X2 X4 X3 A B C X1 X1 X2 X2 X3 X4

    また、後で 共通テーブル式を使用する SQL クエリを使用しないものに変換する方法 (SQL Server 2000 の場合) .



    1. SQLAlchemy MySQL接続が常にスリープ状態になるのは奇妙ですか?

    2. MySql複合キーとnull値

    3. SqlDataAdapter.Fillメソッドが遅い

    4. MySQLの管理方法-OracleDBAの場合