11

これは非常に基本的な問題かもしれませんが、私はSQLをまったく知りません。

問題を単純化するために、列が1つしかないテーブルを作成して、行を水平方向に書き留めることができます。

1 3 11 39 41 45 52 63 66 70 72 80 81 90 92 97

ご覧のとおり、並べ替えられています。これで、「70」の行があることがわかりました。その前の5行を昇順でクエリしたいと思います。つまり、私は欲しい

41 45 52 63 66

クエリはどのようにすればよいですか?

5つの行を降順でクエリし、後で結果セットを逆にすることができますが、もっと良い方法があるはずです。

4

2 に答える 2

20

likeToCodeの例をとると、次のように変更して、結果を並べ替えます。

SELECT * FROM (
    SELECT *
    FROM SAMPLE
    WHERE index1 < 70
    ORDER BY index1 DESC
    LIMIT 0,5
)
ORDER BY index1 ASC;
于 2012-05-10T12:49:35.127 に答える
3

以下は私が思いついたクエリですが、これがあなたが必要としているものであるかどうかはわかりません。さらに、結果は降順です。

index1を唯一の列とするテーブルSAMPLEを作成しました。

SELECT * FROM SAMPLE WHERE index1 < 70 ORDER BY index1 DESC LIMIT 0,5;
于 2012-05-10T09:28:31.447 に答える