小さい会社の1人SEの開発記というか奮戦記

  1. SQL Server
  2. 145 view

IN句+サブクエリを使ってデーターを削除する【SQL Server】

入力データテーブルからルールに違反しているデータをアラームテーブルにinsertし、アラームテーブルにあるデータと合致するものを入力データテーブルから削除すると言うのは良くある処理だと思います。備忘録としてポイントになる事をまとめます。

やりたい事

同一DB内に同一ののデータ構造を持つ2つのテーブル、dbo.T_テーブル と dbo.T_アラームリストがある
主キーとして ID [int] IDENTITY(1,1) NOT NULL を持っている

  1. カラム名 TEXT1 が NULL のデータを dbo.T_テーブル から dbo.T_アラームリスト にコピーを取る
  2. dbo.T_アラームリストにある ID と合致するデータを全て dbo.T_テーブル から削除する

SQL文で書いてみる

  1. INSERT INTO T_アラームリスト SELECT * FROM T_テーブル WHERE TEXT1 IS NULL
  2. DELETE FROM T_テーブル WHERE ID IN (SELECT DISTINCT ID FROM T_アラームリスト)

ポイント

WHERE の対象に IN句+サブクエリを使うとそのサブクエリの計算結果を全て WHERE句の対象にする事ができます。

レコードセット.EOF までループを回すより、ADODB.Commandを使った方が高速に処理ができますので用途の1つとして覚えておくと役に立ちます。

 

SQL Serverの最近記事

  1. SQL文で今日から7日前までを指定する

  2. CASE文でビューに分岐処理を実装する【SQL Server】

  3. 変更の保存が許可されていません【SQL Server】

  4. Select Into でテーブルを別のマシンにコピーする【SQL Server】

  5. IN句+サブクエリを使ってデーターを削除する【SQL Server】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する