MYSQL中LIMIT语句(限制语句)
0 写在前面
记得之前写过一个分页查询的例子,用的方法就是limit限定条目数。 如果对于数据太多,把所有数据放在一个屏幕上显得很乱,如果限定一下一个屏幕显示几条数据,分成n页就显得很干净利索。
1 语法格式
格式1:[NOT] LIMIT N
返回 N 条记录
格式2:[NOT] LIMIT N,M
从第 N 条记录开始, 返回 M 条记录
2 SQL准备
SQL:
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user_wages_information -- ---------------------------- DROP TABLE IF EXISTS `user_wages_information`; CREATE TABLE `user_wages_information` ( `id` int NOT NULL AUTO_INCREMENT COMMENT 自增主键, `user_wager_information_uuid` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 用户工资表主键, `user_information_uuid` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 用户信息主键, `year` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 年份, `month` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 月份, `base_salary` double UNSIGNED NULL DEFAULT NULL COMMENT 基本工资, `bonus` double NULL DEFAULT NULL COMMENT 奖金, `punish` double NULL DEFAULT NULL COMMENT 扣除, `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 备注, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 用户工资信息表 ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of user_wages_information -- ---------------------------- INSERT INTO `user_wages_information` VALUES (1, 92b639cf-c2ca-4fff-9fd8-4c8074e8109c, f76b7382-8fc5-4197-8d46-f9d6e3729089, 2022, 10, 3000, 1500, 100, 4400); INSERT INTO `user_wages_information` VALUES (2, 4dcf10bd-2706-49c4-a505-41da5667cd08, f76b7382-8fc5-4197-8d46-f9d6e3729089, 2022, 9, 3000, 1500, 0, 4500); INSERT INTO `user_wages_information` VALUES (3, 2a560bbf-c98e-4bd4-b8ed-4068d1c261ab, 197410ca-9dde-4850-9ff7-5153786db821, 2022, 10, 9000, 4000, 0, 13000); INSERT INTO `user_wages_information` VALUES (4, 7eb42aa0-dbc3-4d88-a636-d3044ec6efdf, f76b7382-8fc5-4197-8d46-f9d6e3729089, 2022, 8, 3000, 1000, 500, 3500); INSERT INTO `user_wages_information` VALUES (5, 37cb6240-a958-44db-8276-2f2af2156a32, 197410ca-9dde-4850-9ff7-5153786db821, 2022, 9, 8000, 3000, 0, 11000); INSERT INTO `user_wages_information` VALUES (6, f2009698-8152-4045-b7a8-927994993af9, 01198488-a0b6-46ba-9311-9e64ba1d41ef, 2022, 10, 5000, 0, 0, 5000); INSERT INTO `user_wages_information` VALUES (7, e3e45ce4-1db1-40ff-8efe-f7a0685972e2, 01198488-a0b6-46ba-9311-9e64ba1d41ef, 2022, 9, 5000, 0, 0, 5000); SET FOREIGN_KEY_CHECKS = 1;
3 举例说明
3.1 格式1: [NOT] LIMIT N
此功能是查询表中前N条数据,TIPS(N必须是正整数)
查询表中前三条数据:
SELECT FROM `user_wages_information` LIMIT 3
结果:
3.2格式1: [NOT] LIMIT N,M
此功能是查询表中第N条开始,M条数据TIPS(N,M必须是正整数)N从0开始
查询第4,5,6条数据,那就是从3开始,3条数据。
SELECT FROM `user_wages_information` LIMIT 3,3
结果:
结果都是正确的。
4 小技巧–分页公式
设定:
页码:curPage
一页多少条数:pageSize
则他的公式为(伪代码):[NOT] LIMIT (curPage-1)*pageSize,pageSize
如果我一页是三条:
第一页:LIMIT (1-1)3,3 -----> LIMIT 0,3
第二页:LIMIT (2-1)3,3 -----> LIMIT 3,3
e`
如果我一页是三条:
第一页:LIMIT (1-1)3,3 -----> LIMIT 0,3
第二页:LIMIT (2-1)3,3 -----> LIMIT 3,3
这个已经验证过了,可以直接拿来用。