我有一个包含数百行的表,我想获取特定的行,我使用了LIMIT以及id和id之间的行 在我的应用程序中,我有两个文本输入,一个用于START NUMBER,一个用于END NUMBER,当我使用LIMIT时,我需要告诉用户做出正确的计算以获得正确的开始和结束 所以例如,如果我有一个3000行的表,并且我想选择2000行以上的100行,那么查询将是:
Select * from table LIMIT 2000,100
这将选择2000行以上的100行
介于方法之间:
在between方法中,我在所有表格上运行while函数,并且我使用IF语句来获取正确的id,这就是我正在做的事情:< / p>
Select * from table
$datastart = $_POST["datastart"];
$dataend = $_POST["dataend"];
$firstid = 0;
$lastid = 0;
$varcount6=1;
$sql = "select ID from users_info";
$sqlread = mysqli_query($conn,$sql);
while($row = mysqli_fetch_assoc($sqlread)){
if($datastart==$varcount6){
$firstid = $rowdirstid["ID"];
}
if($varcount6>=$dataend){
$lastid = $rowdirstid["id1"];
break;
}
$varcount6++;
}
所以现在我有第一个id和表的最后一个id,接下来我使用另一个sql查询:
Select * from table where id between $firstid and $lastid
两者都有效
我的问题是:如果我每次都要加载大量数据,我该怎么用?
我应该一起去吗?或者LIMIT会完成工作吗?
答案 0 :(得分:1)
首先,你永远不应该使用PHP来获取所需的数据,坚持只在SQL中这样做,因为从不需要PHP。
您正在使用的限制查询不会针对您尝试执行的操作进行限制,因为它不会关心条目的ID,因此,如果您的ID为&#39; s不是100%连续,你不会得到理想的结果。
您应该使用帖子底部显示的中间查询。
但是,既然你还没有提供完整的代码,我就不能说你是否对这个输入进行了清理,但这始终是一件好事。最好还是使用参数化查询。
答案 1 :(得分:0)
如果您确定ID是连续的,请使用SELECT * FROM t WHERE id BETWEEN a AND b ORDER BY ID ASC
如果使用LIMIT,则SQL引擎必须扫描并排序所有第一批结果。
(并索引id
字段)