如何在mysql中选择前三行

Posted

技术标签:

【中文标题】如何在mysql中选择前三行【英文标题】:How to select the top third row in mysql 【发布时间】:2018-06-21 13:01:21 【问题描述】:

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

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

?>

【问题讨论】:

【参考方案1】:

使用偏移量:

SELECT * FROM songs ORDER BY id ASC LIMIT 1 OFFSET 2

简写(你正在使用的)是相反的,所以首先是 OFFSET,然后是 LIMIT:

SELECT * FROM songs ORDER BY id ASC LIMIT 2,1;

【讨论】:

如果有多个记录具有相同的数据,那么它不会给出所有......这不是一个正确的答案 第三行的问题。这给出了那个。【参考方案2】:

使用偏移量

这里的限制 1 它只是意味着你需要一个记录 而偏移量表示跳过前 2

SELECT * FROM songs ORDER BY id ASC LIMIT 1 OFFSET 2

【讨论】:

【参考方案3】:

你在limit之后使用的参数应该颠倒过来。 第一个参数是偏移量,第二个参数是你想要的记录数。

SELECT * FROM songs ORDER BY id ASC LIMIT 2,1

【讨论】:

【参考方案4】:

这只是我的看法—— 像这样的排序应该始终在客户端软件中完成。 提取数据 - 删除您的 SQL 的 ORDER BY ... 在您的客户端中对其进行排序,然后选择第三行并将其返回给调用者。

与通过 SQL 查询驱动所有这些相比,您将获得更好的可扩展性和可维护性。

这是我通过定制软件解决这些类型问题时的首选方法,并且随着时间的推移已得到证明。

想一想: 从歌曲中选择 ID

将 id 放入您的代码中,并在那里对其进行排序。然后选择列表中的第三个。那么:

从 ID = VALUE FROM ID ABOVE 的歌曲中选择标题、作者、艺术家……

是的,您要访问数据库两次,但这是两个非常有效的查询,并且随着您的数据库扩展,它们的性能会比您建议的花哨顺序更好。

【讨论】:

以上是关于如何在mysql中选择前三行的主要内容,如果未能解决你的问题,请参考以下文章

PHP CSV,如何从当前行获取前三行和后三行

excel怎么让前三行一直显示?

表格怎么冻结前两行

如何获得前三行的总和,然后是新列中的下三行

无法选择表格前三行中的所有单选按钮

如何从表中的每个不同类别中选择三行?