mysql conocimiento básico-TENIENDO

Autor: Dian mundo ordinario 

Fuente: desarrollo de la base de datos SQL

Esta edición de conocimientos básicos de mysql le presenta la función y la gramática de tener. ¡Aquí hay ejemplos para su referencia y referencia!

El papel de TENER

La cláusula HAVING le permite especificar condiciones de filtro para controlar qué grupos en los resultados de la consulta pueden aparecer en los resultados finales.

La cláusula WHERE impone condiciones en la columna seleccionada, y la cláusula HAVING impone condiciones en el grupo producido por la cláusula GROUP BY.

TENIENDO sintaxis

En una consulta SELECT, la cláusula HAVING debe seguir inmediatamente a la cláusula GROUP BY y aparecer antes de la cláusula ORDER BY (si corresponde). La sintaxis de la instrucción SELECT con la cláusula HAVING es la siguiente:

SELECCIONAR columna1, columna2

DESDE table1, table2

DONDE [condiciones]

GROUP BY column1, column2

TENIENDO [condiciones]

ORDER BY column1, column2

Hoja de datos de muestra

Tomemos como ejemplo los clientes de la tabla. Los datos de la tabla son los siguientes:

表 clientes

TENIENDO instancia

Queremos mostrar los datos en la columna "Ciudad" donde el mismo registro aparece dos veces o más. Puede escribir:

SELECCIONAR * DE Clientes 
DONDE 城市 EN ( 
SELECCIONAR 城市 DE Clientes 
AGRUPAR POR 城市
TENER CONTEO (1)> 1 
)

El resultado es:

El código anterior usa una subconsulta anidada (descrita más adelante), porque solo estamos agrupando la columna de la ciudad, por lo que la subconsulta primero consulta las ciudades elegibles y luego devuelve el conjunto de resultados a la condición IN de la consulta principal. Finalmente obtenemos el conjunto de resultados que vimos.

La diferencia entre TENER y DONDE

Tanto HAVING como WHERE se utilizan para filtrar datos, pueden utilizar el mismo operador para filtrar datos, la diferencia es:

  • DONDE ocurre antes de HAVING Antes de ejecutar HAVING, se filtrarán los datos que no cumplan las condiciones de DONDE.
  • DONDE filtra las filas y TENIENDO filtra los datos después de agruparlos y agregarlos.

Por ejemplo, para consultar la información de clientes que no se encuentran en Guangzhou, puede escribir:

SELECCIONE * DE clientes 
DONDE `Ciudad` <> 'Guangzhou'

El resultado es:

Aquí es solo filtrado de filas puro, no hay agrupación involucrada. Por otro ejemplo, para consultar la información del cliente donde la ciudad no está en Guangzhou, y el mismo registro de ciudad aparece dos o más veces, puede escribir:

SELECCIONE * DE Clientes 
DONDE Ciudad EN ( 
SELECCIONE Ciudad DE Clientes 
DONDE Ciudad <> 'Guangzhou' 
GRUPO POR Ciudad 
QUE TIENEN CUENTA (1)> 1 
)

resultado:

Aquí primero usamos DÓNDE para filtrar las filas de datos en Guangzhou, y luego usamos HAVING para agrupar y filtrar los mismos datos registrados, y finalmente obtener los resultados anteriores.

 

Supongo que te gusta

Origin blog.csdn.net/yoggieCDA/article/details/109021720
Recomendado
Clasificación