Mysql选择除第一行之外的行

时间:2017-12-05 14:08:19

标签: mysql select

我在那里有选择表的问题。我想选择除第一行之外的所有行。所以..有我的代码

SELECT * FROM table ORDER BY id DESC 

因此,此代码从表格中选择和订购ID,这给我ID反馈“5> 4> 3> 2> 1”。并且存在问题..如何选择并回显4> 3> 2> 1行。 所以,如果我有id为1,2,6,8,10的行,echo将是10,8,6,2,1并且我希望select只回显8,6,2,1。

我的选择代码完整错误。

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

5 个答案:

答案 0 :(得分:3)

这应该这样做。

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

答案 1 :(得分:0)

试试这个

  

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

上面的查询工作需要限制

请参阅this answer

答案 2 :(得分:0)

试试这个:

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

它为您选择的行提供数字,并且所有行都没有行号为1

的行

答案 3 :(得分:0)

您只需要偏移1,但不能无限制地使用偏移。所以,我建议像:

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

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

修改

阅读:How to use offset without limit

答案 4 :(得分:-1)

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;

希望这有帮助!