#前提
・phpMyadmin(MySQL 15.1 Distrib 10.4.14-MariaDB, for Win64)
・使用環境Windows10 Home XAMPP
・Perlでクエリを実行する
##状況把握
Perlで計算した値を既存のデータベースにアップロードする。
WHEREでid指定などは不可
条件
regist-dateが最新のものから4番目の行(ここで言う)id=3の行のcntの値を3にする
##テーブルの例
テーブル名 graph-data
id | regist-date | cnt |
---|---|---|
1 | 2020-5-15 | 2 |
2 | 2020-6-28 | 3 |
3 | 2020-8-15 | 1 |
4 | 2020-9-15 | 2 |
5 | 2020-10-28 | 8 |
6 | 2020-11-15 | 1 |
データ型
id → int(10)
regist-date → date
cnt → int(10)
このテーブルを、、
__行をregist-dateが新しい順にこう並べ替え、__
id | regist-date | cnt |
---|---|---|
6 | 2020-11-15 | 1 |
5 | 2020-10-28 | 8 |
4 | 2020-9-15 | 2 |
3 | 2020-8-15 | 1 |
2 | 2020-6-28 | 3 |
1 | 2020-5-15 | 2 |
__こうしたい__(四行目のcntの値を3に変更)
id | regist-date | cnt |
---|---|---|
6 | 2020-11-15 | 1 |
5 | 2020-10-28 | 8 |
4 | 2020-9-15 | 2 |
3 | 2020-8-15 | 3 |
2 | 2020-6-28 | 3 |
1 | 2020-5-15 | 2 |
##筆者が失敗したクエリ
MySQL
1 UPDATE graph_data SET cnt = 3 ORDER BY regist_date DESC LIMIT 1,1 ;
明らかな構文エラーですね、筆者はつい、、可能だと思っていました。。
勉強不足の露呈、、、
UPDATE はLIMITで開始点 終止点を指定できないんですね。。。
下記のような取得件数は指定できるようですが。
DESC LIMIT 2
DESC LIMIT 36
###ググってみた感じ
CASEなどといった条件指定はたくさんあるが、今回の
こういった処理は現実的でないような、、
もし方法があればご教授いただければ幸いです。
不足情報ございましたら追記致します。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー