0

x 以上のすべての値と、x より大きくない最初の値を返す SQL クエリを作成したいと考えています。

たとえば、値 1、2、3、4、5 を含むテーブルがあり、x が 3 の場合、2、3、4、5 を返す必要があります。

私の例に等間隔の整数が含まれているという事実は、私の実際のデータがそれほど協力的ではないため、役に立ちません。

これは可能ですか、それともテーブル全体を取得して、必要な行を手動で把握する方がよいでしょうか?

4

3 に答える 3

3
SELECT <columns>                   -- you want in the result
FROM tableX
WHERE columnX >=
      ( SELECT MAX(columnX)
        FROM tableX
        WHERE columnX < @x         -- @x is the parameter, 3 in your example
      ) ;
于 2013-09-23T16:25:41.307 に答える
2

ユニオンが最善の策です。x より大きいすべての値と x より小さい最大値のセットを一緒に貼り付けます。次のようなものが機能するはずです。

SELECT n FROM table WHERE n > $x ORDER BY n DESC
    UNION SELECT n from table WHERE n < $x ORDER By n DESC LIMIT 0,1;
于 2013-09-23T16:26:53.843 に答える
1
SELECT * FROM MyTable WHERE MyColumn >= 3
UNION
SELECT * FROM MyTable WHERE MyColumn < 3 ORDER BY MyColumn DESC LIMIT 1
于 2013-09-23T16:27:20.020 に答える