有没有一种方法可以从mysql中已知的id值上移10行


Is there a way to go up 10 rows from a known value of id in mysql?

例如:

在一个=>mytableSalary排序的表中(因此,ID不会按顺序排列(,

如果我知道某个员工的Id(比如Id=75(,有没有任何方法可以让我开始从该特定的Id (Id=75)到下一个10选择10UP,从而刚好在Id=75之上结束;在mysql中?

编辑(更多信息(:

我正计划将其用于previous&用于排序表的next按钮。

排序表,例如:

Id=2  | Salary=150K
Id=3  | Salary=100K
Id=8  | Salary=95K
Id=25 | Salary=92K
Id=18 | Salary=90K
Id=35 | Salary=85K
Id=29 | Salary=80K
Id=53 | Salary=75K
Id=50 | Salary=70K
Id=93 | Salary=50K
Id=75 | Salary=45K <----

现在,75 was the 1st Id in the second page,所以,在previous button中,我有:

SELECT * FROM mytable WHERE Id > 75 ORDER BY Salary ASC

这给了我Ids=>93 to 2BUT的行,它们将按相反的顺序,这会打乱我的previous&next按钮。

因此,我提出了这个问题,Hanky Panky将这个答案修改为:

SELECT * FROM
(SELECT * FROM myTable WHERE Id > 75 ORDER BY Salary ASC LIMIT 10) 
ORDER BY Salary DESC

这正是我的想法(即getting the ASC list and then ORDERing it by DESC(。但我在尝试时遇到了这个错误:

#1248 - Every derived table must have its own alias.

编辑(错误(:

对,这只是一件愚蠢的尝试,它总是在INT值> 75中查找大于75的id,然后根据返回的id中的工资进行排序,这只会打乱其他一切。切换到按薪资排序。

编辑(解决方案(:

向其中一个添加别名(t1(可以修复它

SELECT * FROM
(SELECT * FROM myTable WHERE Salary > 45000 ORDER BY Salary ASC LIMIT 10) t1 
ORDER BY Salary DESC

High -> Low顺序显示

可能就是您询问的

SELECT * FROM usersTabLE WHERE id > 75 ORDER BY id ASC LIMIT 10

您的问题可以理解,但自相矛盾。

有没有什么方法可以让我从那个特定的id(id=75(开始选择10行向上到下一个10行,从而在id=75 结束

如果你从75岁开始,然后上升到10岁,你怎么能在75岁结束呢?如果你想要75以上的10行,你可以做

SELECT * FROM yourTable WHERE id > 75 ORDER BY id ASC LIMIT 10

如果你想要75以下的10行,你可以做

SELECT * FROM yourTable WHERE id <= 75 ORDER BY id DESC LIMIT 10

如果你仍然希望这10行按升序排列,你可以进行

   SELECT * FROM(
   SELECT * FROM yourTable WHERE id <= 75 ORDER BY id DESC LIMIT 10
   ) tempAlias ORDER BY id ASC

试试这个。。

从账单限额5,10中选择*#检索第6-15行

从账单限额9518446744073709551615中选择*#所有行

从账单限额5中选择*;#检索前5行

从产品限制10,20中选择*;

--它将留下最初的10条记录(行(,并显示从票据表的第11行到第20行

SELECT * FROM MYTABLE WHERE id <= 75 LIMIT 10

SELECT * FROM MYTABLE WHERE id > 75 LIMIT 10

取决于你想走哪条路