如何通过SQL查询分别获取前6条数据及剩余全部数据?
实现获取Student表前6条及剩余数据的SQL查询
当然可行,利用SQL的LIMIT子句就能轻松实现,以下是调整后的代码:
- 获取前6条数据(你的原有代码没问题,直接用即可):
// 获取前6条学生姓名数据 $Student_Names = $wpdb->get_results("SELECT Student_First_Name, Student_Last_Name FROM Student LIMIT 6");
- 获取除前6条外的剩余全部数据:
// 跳过前6条,获取剩余所有学生姓名数据 $Student_Names_Rest = $wpdb->get_results("SELECT Student_First_Name, Student_Last_Name FROM Student LIMIT 6, 18446744073709551615");
说明:
LIMIT子句的语法是LIMIT [偏移量], [返回行数],这里:
- 第一个参数
6代表跳过前6条数据 - 第二个参数
18446744073709551615是MySQL支持的最大无符号整数,用它可以确保取出偏移量之后的所有剩余数据,不用关心剩下具体有多少条。
如果你的MySQL版本是8.0及以上,也可以用窗口函数ROW_NUMBER()来实现(兼容性稍弱,但逻辑更清晰):
$Student_Names_Rest = $wpdb->get_results(" SELECT Student_First_Name, Student_Last_Name FROM ( SELECT Student_First_Name, Student_Last_Name, ROW_NUMBER() OVER (ORDER BY 1) AS row_num FROM Student ) AS temp WHERE row_num > 6 ");
这里ORDER BY 1是按默认排序(和你第一个查询的排序逻辑保持一致),如果需要指定排序字段,把1换成对应的字段名即可,比如ORDER BY Student_ID,这样前后两个查询的排序逻辑统一,避免数据重复或遗漏。
内容的提问来源于stack exchange,提问作者John Lyons
相关产品推荐
相关产品推荐

