
バッチ処理で1年前の古いデータの削除をしたいのですが日付が20060401のような数値になっています。
MAX関数を使ってSQL文を作ってみたのですが動きません(^_^;)
***BATファイル***
c:\mysql\bin\mysql -u user -p**** <c:\mysql\juten-del.sql
***SQL文***
DELETE FROM 重点商品管理.重点商品 WHERE 日付 <= (MAX(日付)-10000)
かねやんMYSQLADMINを使うと≪Invalid use of group function≫とエラーメッセージが出ます。
【日付 <= 20050301】のように書くと削除されるので【日付 <= (MAX(日付)-10000)】の部分が間違っていると思うのですが・・・それともバッチの作り方が悪いのでしょうか?
どなたかよろしくお願いします<(_ _)>
No.4
- 回答日時:
where 日付<=max(日付)
というのは、構文として間違っています。
max等を比較で使用できるのは、group byを使用し、havingで条件指定するケースです。
副問い合わせ(サブクエリ)を使用し、
where 日付<=(select max(日付) from ~)
という方法もありますが、サポートバージョンが
MySQLの4.1以降だと記憶しています。
そのため、#1、#2さんの回答は、エラーになってしまう可能性があります。
#3さんの方法で、大丈夫ではないかと思います。
No.3
- 回答日時:
バッチ処理でしたら、変数を使って見てはいかがでしょうか?
まず、最大日付を取得して、変数に格納します。
select @maxdate:=max(日付) from 重点商品管理.重点商品;
@maxdateは変数になります。
これを使用して、
delete from 重点商品管理.重点商品 where 日付 <= date_add(@maxdate,interval -1 month);
で、変数より一ヶ月前より小さいか等しい値を削除しています。
これでいかがでしょうか?
No.1
- 回答日時:
DELETE FROM 重点商品管理.重点商品 WHERE 日付 <= (select MAX(日付)-10000 from 重点商品管理.重点商品)
試してないのでわかりませんが、これで動かないですかね?
あと、使用しているデータベースがわかれば、より具体的なアドバイスをもらえるかもしれません
この回答への補足
ありがとうございます。<(_ _)>
残念ながら動きませんでした。
Something is wrong in your syntax : 'select MAX(日付)-10000 from 重点商品管理.重点商品)' ノユカ・ : 1 ケヤフワ
というエラーメッセージが出ました
データベースはMYSQL4.0.26-ntです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のテーブルから値を合計出...
-
下記の問合せを行うクエリを、 ...
-
DISTINCTROWについてです。
-
<SQL>重複しているデータの場合...
-
【ExcelVBA】入力された日付か...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
where句中のtrim関数について
-
Oracleで「文字が無効です」の...
-
テーブルの最後(最新)のレコー...
-
group byの並び順を変えるだけ...
-
BLOBやCLOBのパフォーマンスを...
-
Null値件数をカウントする式に...
-
updateで複数行更新したい
-
【PL/SQL】FROM区に変数を使う方法
-
SELECTした合計値をそのまま割...
-
引数によってwhere句を切り替え...
-
「数字で始まらない」ものを抽...
-
int型フィールドにnullを登録で...
-
AccessのSQL文で1件のみヒット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<SQL>重複しているデータの場合...
-
複数のテーブルから値を合計出...
-
MySQLのdatetime型に0月0日を格納
-
最新の日付と2番目の日付のデー...
-
mysqlでクロス集計を取りたいが...
-
サブクエリを使わない方法
-
Mysqlで最新の日付を持つデータ...
-
SQLで、同じ値が何回連続す...
-
SQL 重複しないJoinの仕方を教...
-
型変換
-
MySQLで特定のグループの上位3...
-
日付検索で0001-01-01 00:00:00...
-
SQLです。下記の問合せを行うク...
-
直近1ヶ月に誕生日を迎える社員...
-
ここで「interval」は どんな働...
-
先期末日の日付を求めるSQL
-
mysqlのif文かcase文で複数条件...
-
MySQLで日付(date)型のdefaul...
-
日付のフォーマット
-
「8月の第3土日」をデータベ...
おすすめ情報