
MySQLのDBにmemberという下記テーブルがあります。
id, member_id, follower_count, date
1, 101, 1, 2018-10-01
2, 102, 1, 2018-10-02
3, 103, 2, 2018-10-30
4, 104, 5, 2018-10-31
5, 105, 7, 2018-11-01
6, 101, 18, 2018-11-07
7, 102, 22, 2018-11-15
8, 103, 35, 2018-11-27
9, 104, 44, 2018-11-30
10, 105, 46, 2019-01-01
11, 101, 55, 2019-01-09
12, 102, 68, 2019-01-31
13, 103, 79, 2019-02-01
14, 104, 132, 2019-02-01
15, 105, 234, 2019-02-06
このテーブルから、1ヶ月以上前のデータで、さらに、月初と月末を除いたデータを削除したいのですが、どのようなsqlを書いたら可能でしょうか?
削除する日が2月8日だった場合、最終的に下記のように表示させたいと思っています。
id, member_id, follower_count, date
1, 101, 1, 2018-10-01
4, 104, 5, 2018-10-31
5, 105, 7, 2018-11-01
9, 104, 44, 2018-11-30
10, 105, 46, 2019-01-01
11, 101, 55, 2019-01-09
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
> 1ヶ月以上前のデータで、さらに、月初と月末を除いたデータ
だとしたら、命題のようなid=1,4,5,9,10,11
意外にも1ヶ月以内の12,13,14,15も残るのでは?
やりかた
・元データ
create table member(id int primary key, member_id int, follower_count int, d date,unique(member_id,d));
insert into member values
( 1,101, 1,'2018-10-01'),
( 2,102, 1,'2018-10-02'),
( 3,103, 2,'2018-10-30'),
( 4,104, 5,'2018-10-31'),
( 5,105, 7,'2018-11-01'),
( 6,101, 18,'2018-11-07'),
( 7,102, 22,'2018-11-15'),
( 8,103, 35,'2018-11-27'),
( 9,104, 44,'2018-11-30'),
(10,105, 46,'2019-01-01'),
(11,101, 55,'2019-01-09'),
(12,102, 68,'2019-01-31'),
(13,103, 79,'2019-02-01'),
(14,104,132,'2019-02-01'),
(15,105,234,'2019-02-06');
・削除
delete from member
where id in (select id from (select id
from member
where not 1 in(date_format(d,"%e"),date_format(d + interval 1 day,"%e"))
and d+interval 1 month<'2019-02-08'
) as t1)
yambejpさん、ありがとうございます。
ご指摘の通り「1ヶ月以内の12,13,14,15も残るのでは?」が正しいです。私のミスです。
また、教えていただいたsqlで思い通りのデータが残りました。
いつも助かります。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- MySQL 【MySQL】本当に困っています。詳しい方、ご教授よろしくお願いします。 1 2023/06/03 14:18
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQLサーバから、項目の属性(型...
-
エクセルの関数について教えて...
-
MySQLでページ毎にログを取りたい
-
複数のテーブルを使ってselect...
-
グループ化したテーブルと他の...
-
mysqlの上限
-
結合で重複のエラーが出る
-
MyISAMからMEMORYに変換した場...
-
Aテーブルの条件でBテーブルか...
-
階層構造のテーブルの行の取得...
-
途中からプライマリーキーを作成
-
クエリの遅さの原因
-
MySQL UPDATE SETが失敗なのに...
-
2つのテーブルからグループ別け...
-
MySQLコマンドライン操作
-
外部キーを持つテーブルを作成...
-
order
-
結合について
-
SQLでできますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報