我想写一个查询来选择一个表的子集,只从给定的id开始。
我知道limit x, y
,但x
这里是原始数字。但在我的情况下,我想从特定的Id开始,无论它在桌面内的位置如何。
我的意思是下面的查询从第5行中选择,但我希望它从带有id的行中选择10条记录,比如213odin2d211d21
:
SELECT * FROM my_table Limit 5, 10
我找不到办法做到这一点。任何帮助将不胜感激。
请注意,这里的Id
是字符串和整数的混合。所以我做不到
SELECT * FROM <table> WHERE id > (id)
答案 0 :(得分:0)
你想做什么是不可能的。默认情况下,不会对数据库中的记录进行排序。如果没有ORDER BY
,您无法期望服务器以任何特定顺序返回您的查询。既然你说,你存储某种数字/字符标识符作为你的id
,少于那么多而未定义,则不清楚哪些记录和#34 ;按照&#34;你的具体记录。
你要么:
话虽这么说,你当然可以定义你想要排序你的id就像排序字符串一样!在这种情况下,您可以使用STRCMP()
来比较两个字符串。您的查询将如下所示:
SELECT * FROM <table> WHERE STRCMP(id,?) = 1 ORDER BY id LIMIT 10
这将选择前10条记录,ID为#34;大于&#34; ?