Recherche…


Sous-requêtes

Une sous-requête est une requête dans une autre requête SQL. Une sous-requête est également appelée requête interne ou sélection interne et l'instruction contenant une sous-requête est appelée requête externe ou sélection externe.

Remarque

  1. Les sous-requêtes doivent être placées entre parenthèses,
  2. Un ORDER BY ne peut pas être utilisé dans une sous-requête.
  3. Le type d'image, par exemple BLOB, tableau, types de données texte, n'est pas autorisé dans les sous-requêtes.

Les sous-requêtes peuvent être utilisées avec les instructions select, insert, update et delete dans la clause where, from, select avec IN, les opérateurs de comparaison, etc.

Nous avons une table nommée ITCompanyInNepal sur laquelle nous allons effectuer des requêtes pour montrer des exemples de sous-requêtes:

entrer la description de l'image ici

Exemples: SubQueries With Select Statement

avec l'opérateur In et la clause where :

SELECT *
FROM ITCompanyInNepal
WHERE Headquarter IN (SELECT Headquarter 
                      FROM ITCompanyInNepal
                      WHERE Headquarter = 'USA');

avec opérateur de comparaison et clause

SELECT *
FROM ITCompanyInNepal
WHERE NumberOfEmployee < (SELECT AVG(NumberOfEmployee) 
                          FROM ITCompanyInNepal
                      )

avec la clause select

SELECT   CompanyName,
         CompanyAddress,
         Headquarter,
         (Select SUM(NumberOfEmployee)
         FROM ITCompanyInNepal
         Where Headquarter = 'USA') AS TotalEmployeeHiredByUSAInKathmandu
FROM     ITCompanyInNepal 
WHERE    CompanyAddress = 'Kathmandu' AND Headquarter = 'USA'

Sous-requêtes avec instruction insert

Nous devons insérer des données de la table IndianCompany dans ITCompanyInNepal. Le tableau pour IndianCompany est présenté ci-dessous:

entrer la description de l'image ici

INSERT INTO ITCompanyInNepal
SELECT * 
FROM IndianCompany

Sous-requêtes avec instruction de mise à jour

Supposons que toutes les entreprises dont le siège est aux États-Unis ont décidé de licencier 50 employés de toutes les sociétés américaines du Népal en raison d'un changement de politique des sociétés américaines.

UPDATE ITCompanyInNepal
SET NumberOfEmployee = NumberOfEmployee - 50
WHERE Headquarter IN (SELECT Headquarter 
                      FROM ITCompanyInNepal 
                      WHERE Headquarter = 'USA')

Sous-requêtes avec instruction de suppression

Supposons que toutes les entreprises dont le siège est au Danemark ont ​​décidé de fermer leurs entreprises au Népal.

DELETE FROM ITCompanyInNepal
WHERE Headquarter IN (SELECT Headquarter 
                     FROM ITCompanyInNepal
                     WHERE Headquarter = 'Denmark')


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow