从具有给定Id的特定行开始限制结果?

时间:2014-11-03 09:33:34

标签: mysql limit offset

我想写一个查询来选择一个表的子集,只从给定的id开始。

我知道limit x, y,但x这里是原始数字。但在我的情况下,我想从特定的Id开始,无论它在桌面内的位置如何。

我的意思是下面的查询从第5行中选择,但我希望它从带有id的行中选择10条记录,比如213odin2d211d21

SELECT * FROM my_table Limit 5, 10

我找不到办法做到这一点。任何帮助将不胜感激。

请注意,这里的Id是字符串和整数的混合。所以我做不到

SELECT * FROM <table> WHERE id > (id)

1 个答案:

答案 0 :(得分:0)

你想做什么是不可能的。默认情况下,不会对数据库中的记录进行排序。如果没有ORDER BY,您无法期望服务器以任何特定顺序返回您的查询。既然你说,你存储某种数字/字符标识符作为你的id少于那么多而未定义,则不清楚哪些记录和#34 ;按照&#34;你的具体记录。

你要么:

  • 定义另一列以对您的记录进行排序,或
  • 定义比较您的ID的行为(什么是&#34;少于&#34;?什么是&#34;大于&#34;?)

话虽这么说,你当然可以定义你想要排序你的id就像排序字符串一样!在这种情况下,您可以使用STRCMP()来比较两个字符串。您的查询将如下所示:

SELECT * FROM <table> WHERE STRCMP(id,?) = 1 ORDER BY id LIMIT 10

这将选择前10条记录,ID为#34;大于&#34; ?