Uso de join y union en mysql

Declaración de construcción de mesa:

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `student_id` int(11) NOT NULL AUTO_INCREMENT,
  `student_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `class_id` int(11) NOT NULL,
  PRIMARY KEY (`student_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '皇后娘娘', 2);
INSERT INTO `student` VALUES (2, '智慧包', 2);
INSERT INTO `student` VALUES (3, '铁根', 2);
INSERT INTO `student` VALUES (4, '下巴', 2);
INSERT INTO `student` VALUES (5, '虞姬', 1);
INSERT INTO `student` VALUES (6, '安其拉', 3);
INSERT INTO `student` VALUES (7, '鲁班', 4);
INSERT INTO `student` VALUES (8, '芈月', 5);
INSERT INTO `student` VALUES (9, '多余同学', 6);

SET FOREIGN_KEY_CHECKS = 1;
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class`  (
  `class_id` int(11) NOT NULL AUTO_INCREMENT,
  `class_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`class_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES (1, '一班');
INSERT INTO `class` VALUES (2, '二班');
INSERT INTO `class` VALUES (3, '三班');
INSERT INTO `class` VALUES (4, '四班');
INSERT INTO `class` VALUES (5, '五班');
INSERT INTO `class` VALUES (7, '多余班级');

SET FOREIGN_KEY_CHECKS = 1;

Los datos iniciales de las dos tablas son los siguientes:

Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

一 、 unión interna

unir internamente

select * 
from student a
inner join class b
on a.class_id = b.class_id

Los resultados de la consulta son los siguientes:

unir internamente

二 、 unión izquierda

unirse a la izquierda

select * 
from student a
left join class b
on a.class_id = b.class_id

Los resultados de la consulta son los siguientes:

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

select * 
from student a
left join class b
on a.class_id = b.class_id
where b.class_id is null

Los resultados de la consulta son los siguientes:

Inserte la descripción de la imagen aquí

三 、 unión derecha

Inserte la descripción de la imagen aquí

select * 
from student a
right join class b
on a.class_id = b.class_id

Los resultados de la consulta son los siguientes:
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

select * 
from student a
right join class b
on a.class_id = b.class_id
where a.class_id is null

Los resultados de la consulta son los siguientes:
Inserte la descripción de la imagen aquí

Cuatro, unión

Dado que mysql no admite la combinación externa completa, se usa la unión para lograr el resultado esperado

Inserte la descripción de la imagen aquí

select * 
from student a
left join class b
on a.class_id = b.class_id

union

select * 
from student a
right join class b
on a.class_id = b.class_id

Los resultados de la consulta son los siguientes:

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

select * 
from student a
left join class b
on a.class_id = b.class_id
where b.class_id is null

union

select * 
from student a
right join class b
on a.class_id = b.class_id
where a.class_id is null

Los resultados de la consulta son los siguientes:

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44042316/article/details/108023738
Recomendado
Clasificación