0

我们在mysql上有这个:


**并且想要返回 2 个限制:**
1- "SELECT * FROM table ORDER BY point DESC LIMIT 0,2"//return 'google' & 'jsfiddle'
2- "SELECT * FROM table ORDER BY point DESC LIMIT 2,2"//return 'stackoverflow' & 'msn'
3- "INSERT INTO table SET id = 11, name = 'gmail', point = 101 "
4- "SELECT * FROM table ORDER BY point DESC LIMIT 4,2"//return 'msn' & 'emra'
* *在数字 4 'msn' 是重复的。我想要 4 号返回 'emra' 和 'facebook'。**
我可以保存 'id' 并且我想要查询返回该 id 之后的记录。

[编辑] 让我以另一种方式问:

我们有这样的记录:

id, name, point
4, 'google', 100
6, 'yahoo', 100
3, 'gmail', 100
8, 'ymail', 100
2, 'fb', 100

我有 id:3 并希望选择此 id 之后的记录(在此示例中为 'ymail'、'fb')



这是一个通过 scorlling(如 facebook)加载的 ajax 内容,但关于每时每刻都在变化的用户的最大点数。

4

1 回答 1

2

如果我正确理解了您的问题(我对此表示怀疑),那么您想要一种在获得第一个 N...

这样做的主要问题是记录(您在#3 中显示的)可能会出现在先前结果之间的任何位置,从而使您已经获取的记录过时(按顺序)。

所以,如果你真的想要这个,你应该做两件事:

  1. 记住您已经获取的所有ID,并在查询中提供NOT IN(list of already fetched ids)inWHERE子句,而不指定偏移量(仅LIMIT 2

  2. After you fetched that, add the amount of the results you fetched anew to the list and reorder it if needed (some sort of insertion sort)

于 2012-07-11T11:14:26.420 回答