【问题标题】:Mysql select rows except first rowMysql选择除第一行以外的行
【发布时间】:2017-12-05 14:08:18
【问题描述】:

我在从表中选择时遇到问题。我想选择除第一行之外的所有行。所以..有我的代码

SELECT * FROM table ORDER BY id DESC 

因此,此代码从表中选择并订购 id,这给了我 id 反馈“5>4>3>2>1”。还有一个问题..我如何选择和回显 4>3>2>1 行。 因此,如果我有 id 为 1,2,6,8,10 的行,则回显将为 10,8,6,2,1,我希望选择仅回显 8,6,2,1。

我的选择代码完全错误。

$other = mysql_query("SELECT * FROM table ORDER BY id DESC LIMIT 1, 1");

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    应该这样做。

    SELECT * FROM table WHERE id NOT IN (SELECT MAX(id) FROM table) ORDER BY id DESC 
    

    【讨论】:

      【解决方案2】:

      试试这个:

      SELECT *
      FROM
      (
          SELECT *, row_number()
          OVER (ORDER BY id DESC) row
          FROM table
      )
      WHERE row != 1
      

      它为您选择的行提供数字并取走所有行号为 1 的行

      【讨论】:

        【解决方案3】:

        试试这个

        $other = mysql_query("SELECT * FROM table ORDER BY id DESC OFFSET 1");

        上述查询无法正常工作,因为需要限制

        参考this answer

        【讨论】:

        • MYSQL 语法无效,不能使用没有“limit”的“offset”
        【解决方案4】:

        你只需要偏移量 1,但不能无限制地使用偏移量。所以,我建议如下:

        SELECT * FROM table ORDER BY id DESC LIMIT 99999999 OFFSET 1
        

        警告:确保您的表不包含大量记录,否则您会遇到性能问题。或者,将限制更改为合理的值,例如 10。

        编辑:

        阅读:How to use offset without limit

        【讨论】:

          【解决方案5】:
          SELECT * 
            FROM table 
            WHERE id NOT IN ( SELECT id 
                                FROM table 
                                ORDER BY id DESC 
                                LIMIT 1 )
          ORDER BY id DESC;
          

          你可以试试这个。
          在这种情况下,我将选择所有行,除了具有最大 id 的行。
          在 [1,2,3,4,5] 的示例中,它将是:

          SELECT * 
            FROM table 
            WHERE id NOT IN ( 5 )
          ORDER BY id DESC;
          

          希望这会有所帮助!

          【讨论】:

          • 感谢您的回答,但它向我发送了反馈“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 'DESC LIMIT 1) ORDER 附近使用的正确语法BY id DESC' 在第 1 行“..
          • 对不起。我修好了。
          • 指定记录 id 不好,因为 MySQL id 总是在变化。在这里我们需要跳过最后一条记录,不管id是多少。
          猜你喜欢
          • 1970-01-01
          • 2011-08-26
          • 1970-01-01
          • 2017-05-13
          • 1970-01-01
          • 2011-03-17
          • 1970-01-01
          • 2016-04-08
          • 2015-01-15
          相关资源
          最近更新 更多