x 以上のすべての値と、x より大きくない最初の値を返す SQL クエリを作成したいと考えています。
たとえば、値 1、2、3、4、5 を含むテーブルがあり、x が 3 の場合、2、3、4、5 を返す必要があります。
私の例に等間隔の整数が含まれているという事実は、私の実際のデータがそれほど協力的ではないため、役に立ちません。
これは可能ですか、それともテーブル全体を取得して、必要な行を手動で把握する方がよいでしょうか?
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
) ;
ユニオンが最善の策です。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;
SELECT * FROM MyTable WHERE MyColumn >= 3
UNION
SELECT * FROM MyTable WHERE MyColumn < 3 ORDER BY MyColumn DESC LIMIT 1