【问题标题】:Mysql Select Second RowMysql选择第二行
【发布时间】:2011-03-17 20:19:58
【问题描述】:

我有一个 mysql 问题。


我的网站上有一个新闻部分,我想显示两个最新项目。 如果我这样做:

SELECT * FROM nieuws ORDER BY id DESC LIMIT 1

它选择最新的项目, 现在我想选择倒数第二个项目。

你们知道怎么做吗?

/// 编辑

现在它不起作用,这是我的代码:(我已包含连接;))

            $select = mysql_query("SELECT * FROM nieuws ORDER BY id DESC LIMIT 1");
            while($row = mysql_fetch_assoc($select)) {
            $datum = $row['time'];
            $titel = $row['title'];
            $bericht = $row['message'];
            ?>
            <div class="entry">

                <span class="blue date"><?php echo "$datum"; ?></span>
                <h3><?php echo "$titel"; ?></h3>
                <p><?php echo "$bericht"; ?></p> <br />
            </div><!-- end of entry --> <?php } ?>
            <?php 
            $select2 = mysql_query("SELECT * FROM nieuws ORDER BY id DESC LIMI 1, 1");
            while($row2 = mysql_fetch_assoc($select2)) {
                $datum = $row2['time'];
                $titel = $row2['title'];
                $bericht = $row2['message'];
                ?>
            <div class="entry">
                <span class="green date"><?php echo "$datum"; ?> </span>
                <h3><?php echo "$titel"; ?></h3>
                <p><?php echo "$bericht"; ?></p>
            </div> <!-- end of entry --> <?php } ?>
        </div><!-- end of news --> 

【问题讨论】:

  • @Alexander 为什么不回答这个问题。
  • 您的问题不清楚。您是要获取最新的两行,还是仅获取最新的第二行?
  • @Pekka,好的,将其发布为答案。有时我会在答案太简单时犹豫发布答案,因为无论如何有人会更快,我们会以许多类似的答案结束。事实上,你现在可以在这里看到它。 :)
  • 它究竟是如何“不起作用”的?而且,顺便说一句,我建议将您的更新作为一个不同的问题发布(当然提供更多细节),因为它与“选择第二行”问题(已经回答)无关。

标签: php mysql sql


【解决方案1】:

SELECT * FROM nieuws ORDER BY id DESC LIMIT 2 - 选择最后 2 项

SELECT * FROM nieuws ORDER BY id DESC LIMIT 1, 1 - 只选择第二项

【讨论】:

  • 它不起作用,我收到此错误:mysql_fetch_assoc(): 提供的参数不是有效的 MySQL 结果资源
  • 是的,我可以提供,查看我的第一篇文章;)
  • 这很奇怪。代码看起来不错。您是否尝试过在 phpMyAdmin 或其他地方执行查询?
  • 我发现了问题!您的第二个查询有错误:写“LIMIT”而不是“LIMI”。
【解决方案2】:

LIMIT 可以接受两个参数:

SELECT ... LIMIT 1, 1

【讨论】:

    【解决方案3】:

    如果要显示最新的两个项目,则可以通过限制为 2 而不是 1 来同时获取两者。这意味着只需一次数据库命中即可获取所需的信息。

    SELECT * FROM nieuws ORDER BY id DESC LIMIT 2
    

    或者如果你只想要第二行,你可以给 LIMIT 一个偏移量,告诉它从哪一行开始,(虽然如果你在一个查询中获取第一行,然后在另一个查询中获取第二行,你'正在执行两次数据库命中以获得所需的数据,这可能会影响性能)。

    SELECT * FROM nieuws ORDER BY id DESC LIMIT 1, 1
    

    您可以在MySQL documentation 中找到有关如何使用 LIMIT 子句的更多信息。

    【讨论】:

      【解决方案4】:

      SELECT * FROM table where id >(SELECT id FROM table order by id ASC limit1,1) and id

      【讨论】:

      • 获取第二行到最后一行的数据
      猜你喜欢
      • 2020-03-21
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2013-02-02
      • 2021-07-23
      相关资源
      最近更新 更多