2012-08-12 94 views
0

我有查询:我怎样才能获得前一行在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可以小于CURENT ID

回答

0

你的条件是:该ID必须大于570153.

  • 570164是返回的结果,这满足了这个条件。
  • 567556是您希望得到的结果,但不符合该条件。

我的猜测是你想要一个小于,而不是大于你的ID条件,但我不知道你的目标是什么,所以不能确定。 我也会将你的排序条件从ASC切换到ID列上的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