diaryプログラミング技術メモ2017-12-08SQLite:上から何番目の行を削除したいSQLiteはじめに最近、大学でSQLiteを習ったのですが、データベースを作成中「上から〇番目のものを消したいな」と思ったのですが、それが上手くいかなかったのでいろいろと調べてみました。maedaLIMITとOFFSETSELECT文ではLIMITとOFFSETという変数を指定するだけで、上から何番目の行を指定することができます。LIMITlimitというのは抜き出した行(またはパラメータ)の数を制限する命令です。2;としたときの結果は以下の表になります。katoOFFSETOFFSETというのは行を取得するときの開始位置を決める命令です。LIMITを使用しているときのみ使用可能です。1;と書くとエラーを吐きます。その結果は以下の表になります。maeda上からk番目を取得したいとき以上のことを踏まえると上からk番目を取得する書き方は以下のようになります。k-1;上からk番目を削除したいこれをDELETE文でもできないかと思い以下のようなコマンドを書きました。k-1;しかし、このコードはエラーを吐いてしまいました......。してかと思い調べてみるとこんな図がありました。delete-stmt-limitedより引用つまりはDELETE文ではLIMITもOFFSETも使えないらしいです。SELECT文と組み合わせるじゃあ、上からk番目を消すことができないのかというと別にそういうわけではなく、SELECT文と組み合わせると可能になるようです。k-1)は上からk番目の行のidを取得しています。そのidと同じ行を削除すれば結果的に上からk番目の行を削除できるというわけです。おわりに今回はDELETE文でスマートに上からk番目を削除したかったのですが、どうやら仕組み的に間接的な方法しかないことが分かりました。遠回りな分コマンドが長くなってしまうのはあまり好きではないですね......。PGraphicsでジェネラティブアート月別アーカイブはてなブログをはじめよう!ZawaWorksさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。