MySQL 过滤器在按顺序排序的同一列上

彼得·海达

期望的输出:

我想2019-11-23 17:25:00按升序排列日期和更早的2 行,因此我不必在应用程序层对它们进行排序。

|2019-11-23 17:24:00|
|2019-11-23 17:25:00|

我的表:( 为了这个问题,我省略了不必要的数据。)

+===================+
|starttime          |
+===================+
|2019-11-23 17:22:00|
|2019-11-23 17:23:00|
|2019-11-23 17:24:00|
|2019-11-23 17:25:00|
|2019-11-23 17:26:00|
|2019-11-23 17:27:00|
+===================+

到目前为止我尝试过的:

1) 此查询返回前 2 项(不正确):

SELECT `starttime`
FROM `table`
WHERE `starttime` <= "2019-11-23 17:25:00"
ORDER BY `starttime` ASC
LIMIT 2

返回数据:

|2019-11-23 17:22:00|
|2019-11-23 17:23:00|

2) 此查询返回正确的 2 个项目,但顺序相反:

SELECT `starttime`
FROM `table`
WHERE `starttime` <= "2019-11-23 17:25:00"
ORDER BY `starttime` DESC
LIMIT 2

返回数据

|2019-11-23 17:25:00|
|2019-11-23 17:24:00|
福帕斯

您的第二个查询是正确的,您所要做的就是将其嵌套在另一个查询中,您将在其中重新排序 2 行:

SELECT t.*
FROM (
  SELECT `starttime`
  FROM `table`
  WHERE `starttime` <= "2019-11-23 17:25:00"
  ORDER BY `starttime` DESC
  LIMIT 2
) t
ORDER BY t.`starttime`

请参阅演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章