You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

phpMyAdmin中联表查询:如何按blog_id降序获取n-1条记录?

解决SQL查询报错及实现需求的方法

原语句问题分析

  1. LIMIT语法错误:MySQL的LIMIT子句不支持直接使用n-1这类未定义的表达式,这是报错"Unexpected token. (near n)"的直接原因。
  2. 排序不符合需求:原语句用ORDER BY blogs.blog_category, blogs.blog_posting_date DESC排序,但需求是按blogs.blog_id字段降序排列,此处需要修正。

正确实现方案

方案一:通过变量动态计算LIMIT值

先获取符合条件的总记录数,再计算出需要返回的条数(总条数-1),最后执行查询:

-- 定义变量存储总记录数
SET @total = (SELECT COUNT(*) FROM blogs WHERE blog_category='1');
-- 计算需要返回的条数
SET @limit_num = @total - 1;
-- 执行关联查询
SELECT b.*, bc.* 
FROM blogs b
INNER JOIN blog_categories bc ON b.blog_category = bc.category_id
WHERE b.blog_category='1'
ORDER BY b.blog_id DESC
LIMIT @limit_num;

方案二:直接排除最后一条记录(更高效)

因为按blog_id降序排列时,最后一条记录就是blog_id最大的那条,直接通过子查询筛选掉这条记录即可:

SELECT b.*, bc.* 
FROM blogs b
INNER JOIN blog_categories bc ON b.blog_category = bc.category_id
WHERE b.blog_category='1'
AND b.blog_id < (SELECT MAX(blog_id) FROM blogs WHERE blog_category='1')
ORDER BY b.blog_id DESC;

内容的提问来源于stack exchange,提问作者Ranish Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:43