Subconsulta rápida de MySQL

Comprobación rápida de MySQL

Debido a que a menudo olvido algunas declaraciones, palabras clave, operaciones, etc. de MySQL en mi trabajo y estudio diario, recientemente me tomé un tiempo para escribir el siguiente contenido sobre MySQL. es como un diccionario


Restablecer contraseña de mysql operador
de tipo de datos funciones comunes integridad de datos operaciones básicas de la base de datos operaciones en la propia tabla operaciones en los datos de la tabla este artículo conexión de múltiples tablas vista de índice preprocesamiento de sentencias SQL funciones personalizadas y procedimientos almacenados programación en MySQL













escribir delante

Una subconsulta es una consulta anidada en una instrucción de selección, inserción, actualización y eliminación (u otra subconsulta).

  • Operaciones de subconsulta comunes:
    • [no en
    • cualquier
    • todo
    • [no existe
    • Operadores logicos
  • Según los resultados de la consulta, se puede dividir en:
    • Subconsulta de tabla: devuelve una tabla
    • Autoconsulta de fila: devuelve una fila con uno o más valores
    • Subconsulta de columna: devuelve solo una columna para cada fila
    • Autoconsulta escalar: devuelve un valor

Nota:

  • Las subconsultas se pueden anidar hasta 32 niveles.
  • ordenar por solo se puede utilizar fuera de la subconsulta
  • No se pueden recuperar columnas con tipos de datos como texto, blob, texto largo, etc.

Ejemplo

Tabla utilizada en el ejemplo.

mysql> desc user;
+-------+---------------+------+-----+---------+----------------+
| Field | Type          | Null | Key | Default | Extra          |
+-------+---------------+------+-----+---------+----------------+
| id    | int           | NO   | PRI | NULL    | auto_increment |
| name  | char(10)      | YES  |     | NULL    |                |
| sex   | enum('f','m') | YES  |     | NULL    |                |
+-------+---------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

mysql> desc commodity;
+---------+-----------+------+-----+--------------+----------------+
| Field   | Type      | Null | Key | Default      | Extra          |
+---------+-----------+------+-----+--------------+----------------+
| id      | int       | NO   | PRI | NULL         | auto_increment |
| price   | int       | NO   |     | NULL         |                |
| name    | char(128) | YES  |     | 匿名商品     |                |
| user_id | int       | YES  |     | NULL         |                |
+---------+-----------+------+-----+--------------+----------------+
4 rows in set (0.01 sec)

Usar datos que existen en la tabla.

mysql> select * from user;
+----+--------+------+
| id | name   | sex  |
+----+--------+------+
|  1 | 铁子   | m    |
|  2 | 嘎子   | m    |
|  3 | 潘子   | m    |
|  4 | 翠花   | f    |
|  5 | 阿秀   | f    |
+----+--------+------+
5 rows in set (0.00 sec)

mysql> select * from commodity;
+----+-------+--------+---------+
| id | price | name   | user_id |
+----+-------+--------+---------+
|  1 |   100 | 手机   |       1 |
|  2 |   299 | 电脑   |       1 |
|  3 | 18990 | 假酒   |       3 |
|  4 | 18990 | 中华   |       3 |
|  5 |    18 | 中华   |       2 |
+----+-------+--------+---------+
5 rows in set (0.00 sec)

Usar como expresión

# 查看id为3的user的购买数量
select name, 
	(select count(1) from commodity where user_id = 3) 购买数量
	from user
	where id = 3;
+--------+--------------+
| name   | 购买数量     |
+--------+--------------+
| 潘子   |            2 |
+--------+--------------+
1 row in set (0.00 sec)

Usado con cláusulas donde

# 查询购买单品价格大于100的用户的姓名和性别
select name, sex
	from user
	where id in (select user_id from commodity where price > 100);
+--------+------+
| name   | sex  |
+--------+------+
| 铁子   | m    |
| 潘子   | m    |
+--------+------+
2 rows in set (0.00 sec)

Generar subtabla

# 查询购买总价大于1000的人
select name as 姓名,sex as 性别 
from user 
where id in 
	(select user_id 
	from (select user_id,sum(price) total from commodity group by user_id) as newTable 
	where newTable.total > 100);
+--------+--------+
| 姓名   | 性别   |
+--------+--------+
| 铁子   | m      |
| 潘子   | m      |
+--------+--------+
2 rows in set (0.00 sec)

Supongo que te gusta

Origin blog.csdn.net/weixin_45345384/article/details/116983648
Recomendado
Clasificación