好的,我在这里挣扎。我有一个未排序值的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访问该表。 谢谢!
答案 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