如何在mysql

时间:2018-06-21 13:01:22

标签: php mysql sql mysqli

人们正在尝试选择第一行/最近的第三行,我尝试了这一行,但它不起作用,我在哪里出错?

<?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'];
    }
}
?>

4 个答案:

答案 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中的歌曲中选择标题,作者,艺术家,...

是的,您要访问数据库两次,但这是两个非常有效的查询,并且在数据库扩展时,其性能要比您建议的查询顺序更好。