2012-08-12 67 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