查询显示除初始记录以外的记录

时间:2017-06-24 12:02:58

标签: mysql

对于我的项目,我有一个要求,我必须按降序显示除第一条记录之外的所有记录。我有点搞砸了。无论如何,我尝试过以下方法:

SELECT * FROM ins_nr nl WHERE nl.nl_status = '2' ORDER BY nl.nl_id DESC

在这里,我有一个名为ins_nr的表格,它将显示所有记录status 2和id是主键(唯一)。它以desc顺序完美显示。

我不想单独从顶部开始的第一张唱片。我该怎么办?如何修改上面的查询..?

4 个答案:

答案 0 :(得分:1)

Use OFFSET. Then you can skip 1 records and select the remaining ones until the end.

示例:

SELECT * FROM ins_nr nl WHERE nl.nl_status = '2'
         ORDER BY nl.nl_id DESC LIMIT 99999999999 OFFSET 1;
  

OR(您也可以使用更短的语法来实现相同的结果:)

$sql = "SELECT * FROM table_name LIMIT 1, 999999999";

答案 1 :(得分:0)

您正在寻找offset条款。这看起来像:

SELECT *
FROM ins_nr nl
WHERE nl.nl_status = '2'
ORDER BY nl.nl_id DESC
LIMIT 999999999 OFFET 1;

不幸的是,LIMIT是必需的。对于这种情况,传统的做法就是增加数量。

此外,如果nl_status是数字,则使用nl.nl_status = 2。不要将字符串与数字进行比较。

答案 2 :(得分:0)

您可以生成动态rownum并对其进行过滤以省略第一行,例如:

SELECT * 
FROM (
    SELECT nl.*, @r := @r + 1 AS `rn`
    FROM ins_nr nl, (SELECT @r := 0) 
    WHERE nl.nl_status = '2' 
    ORDER BY nl.nl_id DESC
) a 
WHERE a.rn > 1;

答案 3 :(得分:0)

另一种方法是从子查询中获取max id并将其放在where clausole