查询以显示除初始记录以外的记录
对于我的项目,我有一个要求,即必须以降序显示除第一条记录以外的所有记录。我有点混乱。不管怎么说,我曾尝试以下:查询以显示除初始记录以外的记录
SELECT * FROM ins_nr nl WHERE nl.nl_status = '2' ORDER BY nl.nl_id DESC
这里,i有一个表称为ins_nr
这将显示所有与status
2和id
哪个是主键(唯一)的记录。完全显示在desc
的顺序。
我不想单独从顶部的第一条记录。我该怎么办?如何修改上面的查询..?
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";
'附近使用的正确语法。对于上述查询,如何通过给出'OFFSET' – Keynes
@Keynes来省略最后一个。您试试这个吗? –
@凯恩斯..对于参考阅读本:https://www.w3schools.com/php/php_mysql_select_limit.asp –
您在寻找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
。不要将字符串与数字进行比较。
错误代码:1064 您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以找到在'OFFSET 1 – Keynes
可以生成动态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;
另一种方式是从子查询中获得最大的ID,并把它在一个地方clausole
应该如何在第一个记录得到整理呢? –
OFFSET 1 LIMIT 1 QUADRILLION – Strawberry
@DarshanMehta,我不知道,最新记录/我的项目不需要第一个记录 – Keynes