0

我有疑问:

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 ?注意:我按日期下订单,但日期可以相等,prev id 可以小于当前 ID

4

1 回答 1

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
于 2012-08-12T18:07:23.057 回答