如何在mysql中获取前一行

时间:2012-08-12 18:01:18

标签: php mysql

我有疑问:

SELECT ID
FROM VACANCIES 
WHERE CATEGORYID = 1
AND VISIBLE = '1'
AND user_enable = '1'
AND DATA >= '2012-08-10 10:54:46'
AND torder >= 0
AND ID > 570153
ORDER BY torder ASC, DATA ASC, ID ASC
LIMIT 1

我得到结果ID - 570164作为上一个键,这是错误的结果:正确的结果是567556

570164 | ROW 1 | 2012-08-10 11:27:39
567556 | ROW 2 | 2012-08-10 10:55:53
570153 | ROW 2 | 2012-08-10 10:54:46

是否有解决方案获得prev id? 注意: 我按日期订购,但日期可以相等,而且前缀ID可能小于临时ID

1 个答案:

答案 0 :(得分:0)

您的情况表明该ID必须大于570153。

  • 570164是返回的结果,满足该条件。
  • 567556是您希望的结果,但不满足该条件。

我的猜测是你想要一个小于而不是大于你的ID条件,但我不知道你的目标是什么,所以不能确定。 我还会在ID列上将您的排序条件从ASC切换到DESC,或者您将获得第一个匹配(即最低ID),而不是最接近您要比较的值的那个。

SELECT ID
FROM VACANCIES 
WHERE CATEGORYID = 1
AND VISIBLE = '1'
AND user_enable = '1'
AND DATA >= '2012-08-10 10:54:46'
AND torder >= 0
AND ID < 570153
ORDER BY torder ASC, DATA ASC, ID DESC
LIMIT 1