2

表の上位5行から最小ID値を選択する必要があります。このクエリでトップIDを取得します:

SELECT id FROM items ORDER BY id DESC LIMIT 5

正常に動作し、上位5行からID値を返します。

314
313
312
311
310

ここで、このセットから最小IDを取得しようとしています。

SELECT MIN(id) FROM items ORDER BY id DESC LIMIT 5

結果は310になると思いますが、SQLiteは1を返します。どうしたの?私はどこが間違っていて、目標を達成できますか?

アップデート:

SELECT MIN(id) FROM (SELECT id FROM news_items ORDER BY id DESC LIMIT 5)動作するので、最初のクエリの何が問題になっているのか知りたいだけです。

4

2 に答える 2

1

MINの代わりに実際に使用していると仮定するとMAX、説明は非常に簡単です。これORDER BY id DESC LIMIT 5は、クエリで評価される最後の部分です。したがって、最初のクエリで、の最小値を取得しているのでid(そうあるべきです0)、それORDER BY ....は無関係です(1行だけを注文して制限しています)

于 2012-07-06T20:36:42.140 に答える
0

ORDER BY並べ替えを正しく行うには、データセット全体を評価する必要があります。

経験的証拠を通じてMIN、各行で評価されていると想定できます。:)

于 2012-07-06T21:02:30.643 に答える