Afin de réduire le nombre de requêtes sur la base de données, par exemple, afin de réduire la pression sur le système dans les tables non liées, nous pouvons utiliser le mot-clé union all pour interroger données de plusieurs tables Faire une requête commune
(pour faciliter l'utilisation de différentes données en analyse statistique et n'utiliser qu'une seule requête)
Exemple : interroger la table étudiant via un SQL déclaration en une seule requête Le nombre total d'élèves dont le sexe est de sexe masculin et le nombre total d'enseignants de sexe masculin dans la table des enseignants Préparation de la table de base de données :
1, table des étudiants
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', `birth` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', `sex` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES ('01', '赵雷', '1990-01-01', '男'); INSERT INTO `student` VALUES ('02', '钱电', '1990-12-21', '男'); INSERT INTO `student` VALUES ('03', '孙风', '1990-05-20', '男'); INSERT INTO `student` VALUES ('04', '李云', '1990-08-06', '男'); INSERT INTO `student` VALUES ('05', '周梅', '1991-12-01', '女'); INSERT INTO `student` VALUES ('06', '吴兰', '1992-03-01', '女'); INSERT INTO `student` VALUES ('07', '郑竹', '1989-07-01', '女'); INSERT INTO `student` VALUES ('08', '王菊', '1990-01-20', '女'); SET FOREIGN_KEY_CHECKS = 1;
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( `id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '', `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of teacher -- ---------------------------- INSERT INTO `teacher` VALUES ('01', '张三', '男'); INSERT INTO `teacher` VALUES ('02', '李四', '女'); INSERT INTO `teacher` VALUES ('03', '王五', '男'); SET FOREIGN_KEY_CHECKS = 1;
1. Méthode traditionnelle (mauvaises performances des requêtes)#🎜 🎜#Encapsulez les données interrogées dans un tableau et affichez les données dans le tableau séparément.
Cette méthode est relativement simple mais augmentera considérablement le nombre de requêtes dans la base de données
SELECT t1.学生男生总数, t2.男教师总数 FROM ( SELECT count( id ) AS 学生男生总数 FROM student WHERE student.sex = '男' ) t1, ( SELECT count( id ) AS 男教师总数 FROM teacher WHERE teacher.sex = '男' ) t2
select t.* from ( SELECT count(id) as a,0 as b FROM student WHERE student.sex = '男' union all SELECT 0 as a,count(id) as b FROM teacher WHERE teacher.sex = '男' ) t
.
#🎜🎜 #2 Pour le moment, il suffit de résumer respectivement a et b pour connaître le nombre total d'élèves et d'enseignants de sexe masculinselect sum(t.a) as 学生男生总数,sum(t.b) as 男教师总数 from ( SELECT count(id) as a,0 as b FROM student WHERE student.sex = '男' union all SELECT 0 as a,count(id) as b FROM teacher WHERE teacher.sex = '男' ) t
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!