次のように MyTable という名前の MySQL テーブルにいくつかのデータを格納しています。
+----------+-----------+---------------------+
| my_id | amount | updated |
+----------+-----------+---------------------+
| 105415 | 81 | 2013-02-13 00:00:00 |
| 105414 | 33 | 2013-02-13 00:00:00 |
| 220801 | 240 | 2013-02-13 00:00:00 |
| 105411 | 118 | 2013-02-13 00:00:00 |
| 105411 | 118 | 2013-02-12 00:00:00 |
| 220801 | 240 | 2013-02-12 00:00:00 |
| 105414 | 33 | 2013-02-11 00:00:00 |
| 105415 | 81 | 2013-02-11 00:00:00 |
+----------+-----------+---------------------+
私がしたいことは、今日 (2013-02-13) と同じ my_id と amount を持つ昨日 (2013-02-12) のすべての行を削除することです。
今日からすべてのデータを選択する方法を知っています:
SELECT * FROM 'MyTable' WHERE 'updated' = CURDATE()
昨日からすべてのデータを選択する方法を知っています:
SELECT * FROM 'MyTable' WHERE 'updated' = CURDATE()-1
DELETE コマンド ( ) の構文を知っていますDELETE FROM 'MyTable' WHERE...
。
my_id と amount が昨日と今日で一致する行を削除するにはどうすればよいですか?
与えられた例では、これらの行を削除したいと思います:
| 105411 | 118 | 2013-02-12 00:00:00 |
| 220801 | 240 | 2013-02-12 00:00:00 |
そして、これらの行を保持したいと思います:
+----------+-----------+---------------------+
| my_id | amount | updated |
+----------+-----------+---------------------+
| 105415 | 81 | 2013-02-13 00:00:00 |
| 105414 | 33 | 2013-02-13 00:00:00 |
| 220801 | 240 | 2013-02-13 00:00:00 |
| 105411 | 118 | 2013-02-13 00:00:00 |
| 105414 | 33 | 2013-02-11 00:00:00 |
| 105415 | 81 | 2013-02-11 00:00:00 |
+----------+-----------+---------------------+