8

最後のレコードがレコード 35 の場合、テーブルのレコード 34 を取得するにはどうすればよいですか?

4

2 に答える 2

22

最も簡単な方法

SELECT * FROM tab ORDER BY col DESC LIMIT 1,1

これは、2 番目の LIMIT 1,1 から始まる 1 つのレコードを選択します。最初にスキップして次を選択することを意味します

最後が最初になるように順序付けを行う必要があります。言及された列はおそらくidです

必要なレコードの番号がわかっている場合でも、id=34 を選択できないのはなぜですか?

于 2012-12-18T03:22:09.070 に答える
15

35 個のレコードがあることがわかっている場合は、 limit 1 offset 34.

任意のセットから 2 番目の最後の要素を取得する場合は、セットの順序を逆にして、1 つの要素を選択し、1 つの要素をオフセットすることができます。これを自分で実装するには、最初に逆順のセットの最初の 2 つの要素を選択し、次にセットを逆にして最初の要素を選択します。

select * from
  (select * from my_table order by id desc limit 2) table_alias
order by id limit 1
于 2012-12-18T03:22:09.997 に答える