-1

以下の表では、これを TableA と呼びますが、2 つの数値列です。B の値を指定する Select ステートメントを作成する必要があります。1 行または 2 行が返されます。これが単一のSQLステートメントで実行できるかどうかはわかりません。B の値が一致する行が存在する場合、その行だけが返されます。B の値が、その値に最も近い B の 2 つの値の間にある場合、両方の値が返されます。それよりも大きい値が存在し、それよりも小さい値が存在しない場合は、大きい方の値が返されます。大きい値が存在しないが、小さい値が存在する場合は、値が小さい方の行が返されます。下記は用例です。SQL が sqlite で機能する場合は、次のようにするとよいでしょう。

A       B
50     400
10     200
30     100
40     800
20     500


B = 10

A       B
30    100

----------

B = 250

A       B
10     200
50     400

----------

B = 100

A       B
30     100

----------

B = 410

A       B
50     400
20     500

----------

B = 900

A      B
40    800
4

2 に答える 2

1
SELECT * FROM A WHERE B = 10
UNION 
SELECT * FROM A WHERE B = (SELECT MAX(B) FROM A WHERE B < 10)
UNION
SELECT * FROM A WHERE B = (SELECT MIN(B) FROM A WHERE B > 10);

sqlfiddleでライブで動作することを確認してください。

于 2013-06-21T09:46:02.603 に答える