如何在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中选择前三行的主要内容,如果未能解决你的问题,请参考以下文章