-1

在下表中,我称之为 TableA 的是两个数字列。我需要创建一个 Select 语句,其中指定 B 的值。返回一或两行。不确定这是否可以在单个 sql 语句中完成。如果存在 B 的值匹配的行,则仅返回该行。如果 B 的值介于最接近其值的 B 的两个值之间,则返回这两个值。如果存在大于它的值但不存在小于它的值,则返回较大的值。如果不存在较大的值但存在较小的值,则返回具有较小值的行。这里有些例子。如果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 TableA WHERE B = (SELECT MAX(B) FROM TableA WHERE B <= 10)
UNION
SELECT * FROM TableA WHERE B = (SELECT MIN(B) FROM TableA WHERE B >= 10)
于 2013-06-21T10:27:43.827 回答
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 回答