人们正在尝试选择第一行/最近的第三行,我尝试了这一行,但它不起作用,我在哪里出错?
<?php
$sql = "SELECT * FROM songs ORDER BY id ASC LIMIT 1,2;";
$result = mysqli_query($con, $sql);
$resultCheck = mysqli_num_rows($result);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row['artist'];
}
}
?>
答案 0 :(得分:3)
使用补偿:
SELECT * FROM songs ORDER BY id ASC LIMIT 1 OFFSET 2
(您正在使用的)速记是反向的,因此先是OFFSET,然后是LIMIT:
SELECT * FROM songs ORDER BY id ASC LIMIT 2,1;
答案 1 :(得分:1)
使用偏移量
这里是极限1这只是意味着您需要一个记录 而偏移量表示跳过前2个
SELECT * FROM songs ORDER BY id ASC LIMIT 1 OFFSET 2
答案 2 :(得分:0)
限制后使用的参数应颠倒。 第一个参数是offset,第二个参数是所需的记录数。
SELECT * FROM songs ORDER BY id ASC LIMIT 2,1
答案 3 :(得分:0)
这只是我的意见- 此类排序应始终在客户端软件中进行。 提取数据-删除SQL的ORDER BY ... 在您的客户端中对其进行排序,然后选择第三行并将其返回给呼叫者。
与通过SQL查询来驱动所有这些功能相比,您将获得更好的可伸缩性和可维护性。
这是我通过自定义软件解决这类问题时的首选方法,并且随着时间的推移,这种方法已经得到证明。
考虑一下: 从歌曲中选择ID
将ID放入您的代码中,然后将其排序。然后在列表中选择第三个。然后:
从ID = VALUE以上的ID中的歌曲中选择标题,作者,艺术家,...
是的,您要访问数据库两次,但这是两个非常有效的查询,并且在数据库扩展时,其性能要比您建议的查询顺序更好。