Maison  >  Article  >  base de données  >  Comment utiliser la sous-requête MySQL

Comment utiliser la sous-requête MySQL

王林
王林avant
2023-06-02 10:31:051865parcourir

Les instructions Select qui apparaissent dans d'autres instructions sont appelées sous-requêtes ou requêtes internes ; les instructions de requête externes sont appelées requêtes principales ou requêtes externes

-- 子查询
-- 查询的条件来自于另一查询的结果
SELECT * FROM t_user WHERE number=(SELECT number FROM t_user WHERE NAME='张三')

Bien sûr, les sous-requêtes ont également des types, qui sont divisés dans les types suivants :

  • Scalaire. sous-requête (l'ensemble de résultats n'a qu'une seule ligne et une colonne)

  • sous-requête de colonne (l'ensemble de résultats n'a qu'une seule colonne et plusieurs lignes)

  • sous-requête de ligne (l'ensemble de résultats a une ligne et plusieurs colonnes) (moins )

  • sous-requête de table (les ensembles de résultats sont généralement multi-lignes et multi-colonnes)

Ici, nous prenons la nouvelle table t_user comme exemple

Comment utiliser la sous-requête MySQL

Il convient de noter que : La classification ici est basée sur les résultats de la sous-requête intégrée, comme le sql ci-dessus L'instruction est une sous-requête scalaire

Comment utiliser la sous-requête MySQL

Le résultat de la sous-requête n'a qu'une seule ligne et une colonne

Ensuite, nous discuterons en fonction de la position de la sous-requête dans le SQL instruction :

Après la sélection : seule la sous-requête scalaire est prise en charge

-- select语句后面,将t1查询出的结果作为子查询的条件
SELECT t1.number,
  (SELECT NAME FROM t_user t2 WHERE t1.name = t2.name)
FROM t_user t1

Résultats de la requête :

Comment utiliser la sous-requête MySQL

insérer dans, après mise à jour et suppression :

insérer dans est utilisé pour insérer des données dans la table, elle peut donc être suivie par sous-requêtes de colonne et sous-requêtes de table

-- insert into 后跟子查询
INSERT INTO t_user(number,NAME,age,birthday,weight,sex,opertime)
       SELECT number,NAME,age,birthday,weight,sex,NOW() FROM t_user WHERE id=3

Ce qui doit être noté ici, c'est la mise à jour et la suppression

UPDATE t_user SET NAME='abc' WHERE number=(SELECT number FROM t_user WHEREweight=110)

DELETE FROM t_user WHERE id= (SELECT id FROM t_user WHERE id=7)

Les deux sql ci-dessus, mysql sont Nous ne sommes pas autorisés à l'exécuter comme ceci :

Comment utiliser la sous-requête MySQL

Le mécanisme sous-jacent de mysql nous empêche de modifier la structure de cette table lorsque utiliser cette table

En d'autres termes, la sous-requête ne peut pas interroger la table en cours d'exploitation

Après où : elle peut être suivie par une sous-requête scalaire, une sous-requête de colonne, une sous-requête de ligne

-- where后跟标量子查询
-- 查询体重最大的人信息
SELECT * FROM t_user WHERE weight=(SELECT MAX(weight) FROM t_user)
-- where后跟列子查询
-- 查询体重大于或等于130的人信息
SELECT * FROM t_user WHERE weight IN (SELECT weight FROM t_user WHERE weight>=130)
-- where后跟行子查询
-- 查询年龄最大,体重最大的人的信息
SELECT * FROM t_user 
     WHERE (age,weight) = (SELECT MAX(age),MAX(weight) FROM t_user)

Après par : elle peut être suivie par une table. sous-requête

Le résultat de la requête de mots de table est constitué de plusieurs lignes et colonnes, c'est-à-dire une table

-- 表子查询
SELECT t.age FROM (SELECT age,weight FROM t_user)t

Le résultat :

Comment utiliser la sous-requête MySQL

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer