アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば、
SELECT * FROM tbl LIMIT 9, 1;
とすると10行目を選択しますが、例えば、5行しかないテーブルだと何も選択しません。
そうではなく、最後の5行目を選択するにはどうすればよいですか。
すなわち普段は10行目を選択するが、10行に満たないテーブルの場合には最後の行を選択するようにしたいです。

A 回答 (2件)

>この数字列を利用して1行で取ってこれるSQLを書けますか


数字列をIDとして、こうとか。
select * from tbl where ID=(select max(ID) from tbl limit 10);
    • good
    • 0
この回答へのお礼

スミマセン副問合せを使えば簡単でしたね。
最初、質問時に思ったのは、
SELECT * FROM tbl LIMIT 9, 1
のLIMIT 9, 1の部分を、ちょこちょこっと書き換えて簡単に実現できればいいなという事だったのですが、そんな簡単な方法はないという事が分かって満足です。

お礼日時:2021/09/07 21:45

単調増加なIDが使えるか不明なので、こんなとか。



prepare q from 'select * from tbl limit ?,1';
set @n:=(select if(a=0,1,if(a>b,b,a))-1 from (select count(*) as a, 10 as b from tbl) as T);
execute q using @n;
deallocate prepare q;
「LIMIT句で少なくとも1行は選択するよ」の回答画像1
    • good
    • 0
この回答へのお礼

prepare勉強になりました。
私も1行のSQLで取ってくるのはあきらめて、あらかじめ件数を調べることにしました。
すなわち2回SQLを投げることにしました。
今は、うまく動いていますが気持ち的にはむかついています。
ちなみに、このテーブルは始値が1ではないですが1ずつ増加する数字列を持っています(4208, 4209, 4210...のよに1ずつ増えていきます)。
この数字列を利用して1行で取ってこれるSQLを書けますか???

お礼日時:2021/09/06 23:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!