Introducción y ejemplos de uso de MySQL UNION

1 Introducción de uso

ilustrar
efecto El operador UNION se utiliza para combinar los conjuntos de resultados de dos o más declaraciones SELECT.
Requisitos previos para su uso Cada instrucción SELECT en UNION debe tener el mismo número de columnas
1. Los tipos de datos de estas columnas deben ser compatibles: los tipos no tienen que ser idénticos, pero deben ser implícitamente convertibles.
2. Las columnas de cada instrucción SELECT también deben estar organizadas en el mismo orden.
sintaxis de la UNIÓN SELECCIONE nombre_columna(s) DE la tabla1
UNION
SELECCIONE nombre_columna(s) DE la tabla2;
UNIÓN TODA la sintaxis SELECCIONE nombre(s) de columna DE la tabla1
UNION ALL
SELECCIONE nombre(s) de columna DE la tabla2;
La diferencia entre UNION y UNION TODOS Union comprimirá automáticamente los resultados duplicados en múltiples conjuntos de resultados, mientras que union all mostrará todos los resultados, independientemente de si están duplicados o no.

2 ejemplos de uso

2.1 Preparación de datos

  • Tabla de base de datos de prueba: test_onion
  • Datos de la base de datos:
    Insertar descripción de la imagen aquí

2.2 Ejemplo de consulta

  • Suponga el requisito de la consulta: encuentre la cantidad de niños y niñas en cada departamento, es decir, los resultados se enumeran como el nombre del departamento, la cantidad de niños y la cantidad de niñas.

  • Consulta el número de estudiantes varones en cada departamento:

SELECT
	org_name, count(user_sex) as man_num
FROM
	test_union
where user_sex = '男'
GROUP BY org_name;

Insertar descripción de la imagen aquí

  • Consulta el número de alumnas en cada departamento:
SELECT
	org_name, count(user_sex) as woman_num
FROM
	test_union
where user_sex = '女'
GROUP BY org_name;

Insertar descripción de la imagen aquí

  • Integra los dos resultados:
SELECT
	org_name,
	man_num,
	woman_num
FROM
	(
		SELECT
			org_name,
			count(user_sex) AS man_num,
			'' AS woman_num
		FROM
			test_union
		WHERE
			user_sex = '男'
		GROUP BY
			org_name
		UNION ALL
			SELECT
				org_name,
				'' AS man_num,
				count(user_sex) AS woman_num
			FROM
				test_union
			WHERE
				user_sex = '女'
			GROUP BY
				org_name
	) c

Los resultados de la integración son los siguientes:
Insertar descripción de la imagen aquí

Sin embargo, como se puede ver en los resultados anteriores, las dos partes de los datos están completamente empalmadas. El resultado ideal es que los datos masculinos y femeninos del mismo departamento estén en un resultado de consulta. La modificación es la siguiente:

SELECT
	org_name,
	SUM(man_num) as man_num,
	SUM(woman_num) as woman_num
FROM
	(
		SELECT
			org_name,
			count(user_sex) AS man_num,
			'' AS woman_num
		FROM
			test_union
		WHERE
			user_sex = '男'
		GROUP BY
			org_name
		UNION ALL
			SELECT
				org_name,
				'' AS man_num,
				count(user_sex) AS woman_num
			FROM
				test_union
			WHERE
				user_sex = '女'
			GROUP BY
				org_name
	) c
GROUP BY org_name

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_46505978/article/details/130927814
Recomendado
Clasificación