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

SQL ServerでJOINを使用してテーブルを更新しますか?

    SQLServer独自のUPDATE FROMがまったくありません 構文を下げます。また、CommonFieldに参加する必要がある理由もわかりません 後でそれをフィルタリングします。これを試してください:

    UPDATE t1
      SET t1.CalculatedColumn = t2.[Calculated Column]
      FROM dbo.Table1 AS t1
      INNER JOIN dbo.Table2 AS t2
      ON t1.CommonField = t2.[Common Field]
      WHERE t1.BatchNo = '110';
    

    ある列の値を別の列の集計に常に設定しようとするなど、本当にばかげたことをしている場合(冗長データの格納を回避するという原則に違反します)、CTE(共通テーブル式)を使用できます-ここを参照してください詳細については、こちらをご覧ください:

    ;WITH t2 AS
    (
      SELECT [key], CalculatedColumn = SUM(some_column)
        FROM dbo.table2
        GROUP BY [key]
    )
    UPDATE t1
      SET t1.CalculatedColumn = t2.CalculatedColumn
      FROM dbo.table1 AS t1
      INNER JOIN t2
      ON t1.[key] = t2.[key];
    

    これが本当にばかげている理由は、table2の任意の行で毎回この更新全体を再実行する必要があるためです。 変更します。 SUM これは実行時にいつでも計算できるものであり、そうすることで、結果が古くなることを心配する必要はありません。



    1. OracleAceの変更

    2. MySQLのINSERTまたはREPLACEコマンド

    3. sqliteで正規表現を使用する方法

    4. SQL Server 2014に推奨されるIntelプロセッサ–2015年3月