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

SQL データ比較 - 一部のテーブルがありません

    テーブルのどのレコードを比較する必要があるかがわかっている場合にのみ、データを比較できます。 Comparer は PK を使用して、比較するレコードを認識します。テーブルに PK (または少なくとも一意のインデックス) がない場合、テーブル リストに表示されません。

    自分で PK を作成することで解決できます (比較のため)

    編集

    <オール> <リ>

    最近、誰かが比較プロジェクトからいくつかのテーブルを明示的に除外し、それを git にコミットしたために、同僚が苦労しました。新しいプロジェクトでない場合はチェックしてください。

    <リ>

    私は最近、PK なしでテーブルを比較する任務を負い、 ハッシュバイト 新しい友達になるには、テーブルに一意の行がなく、それを解決するために ROW_NUMBER 以下のスニペットを参照してください。

        SELECT Row_number() 
                 OVER ( 
                   partition BY [hashid] 
                   ORDER BY [hashid]) AS RowNumber, 
               * 
        INTO   [dbo].[mytable_temp] 
        FROM   (SELECT Hashbytes('SHA2_512', (SELECT x.* 
                                              FOR xml raw)) AS [HASHID], 
                       * 
                FROM   [dbo].[mytable] AS x) AS y 
    
        go 
    
        ALTER TABLE [dbo].[mytable_temp] 
          ALTER COLUMN [hashid] VARBINARY(900) NOT NULL 
    
        ALTER TABLE [dbo].[mytable_temp] 
          ALTER COLUMN [rownumber] BIGINT NOT NULL 
    
        go 
    
        ALTER TABLE [dbo].[mytable_temp] 
          ADD CONSTRAINT pk_id PRIMARY KEY ([hashid], [rownumber]) 
    
        go 
      

    そうすれば、行の内容全体で計算されたハッシュに基づいて PK を作成できます。

    オブス:。 MyTable_TEMP を比較していることに注意してください MyTable ではありません .そうすれば、そのままにしておくことができます。



    1. 強いエンティティと弱いエンティティMYSQL

    2. isqlで完全なエラーメッセージを取得する

    3. msyqlクエリのすべてのフィールド名にエイリアスを動的に割り当てます

    4. php値をjavaに保存します