MySQL:选择值最接近但大于给定值的行

时间:2017-06-10 11:55:55

标签: php mysql

好的,我在这里挣扎。我有一个未排序值的MySQL表,结构如下:

ID     Size
-----  -----
1      12
2      10
3      1
4      0
5      8
6      9
7      6
8      2
9      9
10     4

我想要做的是给出一个大小(例如大小= 5)提取下一个更大的行(最后一个更小的行)。

我试过了:

SELECT * FROM Table WHERE Size > 5 ORDER BY Size DESC LIMIT 2

但这给了我:

ID     Size
-----  -----
1      12
2      10

但我想要的是

ID     Size
-----  -----
7      6
5      8

任何帮助将不胜感激。如果这有所不同,我使用PHP访问该表。 谢谢!

3 个答案:

答案 0 :(得分:1)

您正在使用DESC以降序获取结果。你应该使用ASC来提升结果。

示例 -

SELECT * FROM Table WHERE Size > 5 ORDER BY Size ASC LIMIT 2

<强> EDITED

您需要先按降序获取,然后再按升序排序。

示例 -

  SELECT * FROM
    (SELECT * FROM Table WHERE Size > 5 ORDER BY Size DESC ) AS r
ORDER BY r.Size ASC LIMIT 2

答案 1 :(得分:1)

您可以选择大小为5的行作为子查询,并从子查询的结果集中选择前两行。

<强>查询

select t.* from(
  select * from your_table_name
  where size > 5
)t
order by t.size asc limit 2;

<强> SQL Fiddle demo

答案 2 :(得分:0)

您应该在ORDER BY子句中使用ASC而不是DESC