MySQL选择行,除了第一行

4

我在从表格中选择数据时遇到了问题。我想选择除第一行以外的所有行。以下是我的代码:

SELECT * FROM table ORDER BY id DESC 

这段代码从表中选择并排序id,给出了反馈“5>4>3>2>1”的id。但是存在一个问题……我该如何选择和输出仅为“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");
5个回答

5
这应该可以解决问题。
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的行。

1

请尝试以下内容

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

以上查询语句需要添加LIMIT限制条件才能正常工作

参考这个答案


无效的MYSQL语法,您不能在没有“limit”的情况下使用“offset”。 - evilReiko

0
你只需要偏移量1,但是偏移量不能没有限制地使用。因此,我建议使用类似以下的方式:
SELECT * FROM table ORDER BY id DESC LIMIT 99999999 OFFSET 1

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

编辑:

阅读:如何在没有限制的情况下使用偏移量


-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;

希望这能帮到你!

谢谢您的回答,但是它给我发送了反馈信息:"您的SQL语法有误,请检查与您的MySQL服务器版本相对应的手册,以获取正确的语法使用方式,在第1行附近的DESC LIMIT 1 ) ORDER BY id DESC"。 - Nol
抱歉。我已修复。 - Ali Majed
指定记录ID并不好,因为MySQL的ID会不断变化。在这里,我们需要跳过最后一条记录,而不管其ID是什么。 - Ruberandinda Patience

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接