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

这个已经验证过了,可以直接拿来用。

经验分享 程序员 微信小程序 职场和发展