DELETEコマンドを別のテーブルの内容で削除したい場合の書き方について

ぷんち 100 評価のポイント
2024-09-04T00:48:07.1366667+00:00

いつもお世話になっております。

SQL文の書き方で教えていただけるとありがたいです。

テーブル1

 年月 日 店舗 売上数量 売上金額

202409 10 001 5     500

202409 11 002 5     450

テーブル2

 年月 日 店舗 処理日

202409 10 001 20240903

202409 11 002 20240904

この2つのテーブルがあった時に

テーブル1のデータ(年月:202409 日:10 店舗:001)を

20240903日に処理した時にテーブル1から削除するにはどのようなSQLを書けばうまく行きますか?

SELECT文だと

select  *

from  テーブル1

inner  join テーブル2

  on テーブル1.年月 = テーブル2.年月

  and テーブル1.日 = テーブル2.日

 and テーブル1.店舗 = テーブル2.店舗

where convert(char,getdate(),112) = テーブル2.処理日

とSQLを書いていますが、この条件に見合うデータを削除するにはどうSQLを

記述すればいいでしょうか?

連結したテーブルの条件で抽出されたデータを削除する方法が良く分からず

ご教授いただけると非常にありがたいです。

よろしくお願いします。

SQL Server
SQL Server
Microsoft リレーショナル データベース管理分析システムのファミリで、電子商取引、基幹業務、データ ウェアハウジングなどのソリューションで使用されています。
40 件の質問
0 件のコメント コメントはありません
{count} 件の投票

承認済みの回答
  1. gekka 9,586 評価のポイント MVP
    2024-09-04T04:02:03.44+00:00

    こんな

    --SELECT * FROM [テーブル1];
    
    DELETE FROM [dbo].[テーブル1]
    WHERE EXISTS 
    	(SELECT * 
    	FROM [テーブル2] as T2 
    	WHERE ([テーブル1].年月=T2.年月) AND ([テーブル1].日=T2.日) AND ([テーブル1].店舗=T2.店舗 )
    	AND T2.処理日='20240903')   --convert(char,getdate(),112) ) --getdate()は現在日になるので
    
    --SELECT * FROM [テーブル1];
    

0 件の追加の回答

並べ替え方法: 最も役に立つ

お客様の回答

回答は、質問作成者が [承諾された回答] としてマークできます。これは、ユーザーが回答が作成者の問題を解決したことを知るのに役立ちます。