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

MySQL 5.0 如何通过WHERE子句查询符合price=25条件的每第3行数据

实现方案

支持窗口函数的数据库(MySQL 8.0+、PostgreSQL、SQL Server等通用方案)

先过滤所有Price=25的记录,给符合条件的记录按id升序分配行号,再筛选行号为3的倍数的行即可:

SELECT id, Product, Price
FROM (
    SELECT 
        id, Product, Price,
        ROW_NUMBER() OVER (ORDER BY id ASC) AS row_num
    FROM 你的表名
    WHERE Price = 25
) AS filtered_data
WHERE row_num % 3 = 0;

逻辑说明:内层查询筛选出所有定价为25的商品,按id从小到大排序后生成连续行号,你示例中符合条件的记录行号依次为:id1=1、id2=2、id5=3、id7=4、id8=5、id10=6,外层筛选row_num模3等于0的行,就会返回id=5、id=10两条记录,完全匹配预期结果。

不支持窗口函数的旧版本MySQL方案

可以用用户自定义变量实现行号计数:

SELECT id, Product, Price
FROM (
    SELECT 
        id, Product, Price,
        @row := @row + 1 AS row_num
    FROM 你的表名, (SELECT @row := 0) AS init_var
    WHERE Price = 25
    ORDER BY id ASC
) AS filtered_data
WHERE row_num MOD 3 = 0;

注意:一定要明确指定ORDER BY的排序规则,否则数据库返回的记录顺序不确定,会导致行号计算错误,如果你需要按其他维度排序,修改ORDER BY后的字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:27:02