Subqueries
Une sous-requête ou une requête interne ou une requête imbriquée est une requête à l'intérieur d'une autre requête SQLite et intégrée dans la clause WHERE.
Une sous-requête est utilisée pour renvoyer des données qui seront utilisées dans la requête principale comme condition pour restreindre davantage les données à récupérer.
Les sous-requêtes peuvent être utilisées avec les instructions SELECT, INSERT, UPDATE et DELETE ainsi qu'avec les opérateurs tels que =, <, >, >=, <=, IN, BETWEEN, etc.
Il existe quelques règles que les sous-requêtes doivent suivre -
- Les sous-requêtes doivent être placées entre parenthèses.
- Une sous-requête ne peut comporter qu'une seule colonne dans la clause SELECT, sauf si plusieurs colonnes sont présentes dans la requête principale pour que la sous-requête puisse comparer les colonnes sélectionnées.
- Un ORDER BY ne peut pas être utilisé dans une sous-requête, bien que la requête principale puisse utiliser un ORDER BY. Le GROUP BY peut être utilisé pour exécuter la même fonction que le ORDER BY dans une sous-requête.
- Les sous-requêtes qui renvoient plus d'une ligne ne peuvent être utilisées qu'avec des opérateurs de valeurs multiples, tels que l'opérateur IN.
- L'opérateur BETWEEN ne peut pas être utilisé avec une sous-requête ; toutefois, BETWEEN peut être utilisé dans la sous-requête.
Sous-requêtes avec l'instruction SELECT
Les sous-requêtes sont le plus souvent utilisées avec l'instruction SELECT. La syntaxe de base est la suivante -
SELECT column_name [, column_name ]
FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
Exemple
Considérons une table de l'entreprise avec les enregistrements suivants.
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
Maintenant, vérifions la sous-requête suivante avec l'instruction SELECT.
sqlite> SELECT *
FROM COMPANY
WHERE ID IN (SELECT ID
FROM COMPANY
WHERE SALARY > 45000) ;
Cela donnera le résultat suivant.
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
Sous-requêtes avec l'instruction INSERT
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !