Opérateurs MySQL ANY et ALL
Les opérateurs MySQL ANY et ALL
Les opérateurs ANY
et ALL
vous permettent d'effectuer une comparaison entre une valeur de colonne unique et une plage d'autres valeurs.
L'opérateur ANY
L' ANY
opérateur :
- renvoie une valeur booléenne comme résultat
- renvoie TRUE si TOUTES les valeurs de la sous-requête remplissent la condition
ANY
signifie que la condition sera vraie si l'opération est vraie pour l'une des valeurs de la plage.
N'IMPORTE QUELLE syntaxe
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ANY
(SELECT column_name
FROM table_name
WHERE
condition);
Remarque : L' opérateur doit être un opérateur de comparaison standard (=, <>, !=, >, >=, < ou <=).
L'opérateur ALL
L' ALL
opérateur :
- renvoie une valeur booléenne comme résultat
- renvoie TRUE si TOUTES les valeurs de la sous-requête remplissent la condition
- est utilisé avec les instructions
SELECT
,WHERE
etHAVING
ALL
signifie que la condition ne sera vraie que si l'opération est vraie pour toutes les valeurs de la plage.
ALL Syntaxe avec SELECT
SELECT ALL column_name(s)
FROM table_name
WHERE
condition;
ALL Syntaxe Avec WHERE ou HAVING
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
Remarque : L' opérateur doit être un opérateur de comparaison standard (=, <>, !=, >, >=, < ou <=).
Base de données de démonstration
Vous trouverez ci-dessous une sélection du tableau "Produits" de l'exemple de base de données Northwind :
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10 |
4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22 |
5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
6 | Grandma's Boysenberry Spread | 3 | 2 | 12 - 8 oz jars | 25 |
7 | Uncle Bob's Organic Dried Pears | 3 | 7 | 12 - 1 lb pkgs. | 30 |
8 | Northwoods Cranberry Sauce | 3 | 2 | 12 - 12 oz jars | 40 |
9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97 |
Et une sélection du tableau "OrderDetails" :
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
6 | 10250 | 41 | 10 |
7 | 10250 | 51 | 35 |
8 | 10250 | 65 | 15 |
9 | 10251 | 22 | 6 |
10 | 10251 | 57 | 15 |
SQL ANY Exemples
L'instruction SQL suivante répertorie le ProductName si elle trouve que N'IMPORTE QUEL enregistrement dans la table OrderDetails a une quantité égale à 10 (cela renverra VRAI car la colonne Quantité a des valeurs de 10) :
Exemple
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
L'instruction SQL suivante répertorie ProductName si elle trouve que N'IMPORTE QUEL enregistrement dans la table OrderDetails a une quantité supérieure à 99 (cela renverra VRAI car la colonne Quantité a des valeurs supérieures à 99) :
Exemple
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
L'instruction SQL suivante répertorie le ProductName si elle trouve que N'IMPORTE QUEL enregistrement dans la table OrderDetails a une quantité supérieure à 1 000 (cela renverra FAUX car la colonne Quantité n'a pas de valeur supérieure à 1 000) :
Exemple
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
SQL ALL Exemples
L'instruction SQL suivante répertorie TOUS les noms de produits :
Exemple
SELECT ALL ProductName
FROM Products
WHERE TRUE;
L'instruction SQL suivante répertorie ProductName si TOUS les enregistrements de la table OrderDetails ont une quantité égale à 10. Cela renverra bien sûr FAUX car la colonne Quantité a de nombreuses valeurs différentes (pas seulement la valeur de 10) :
Exemple
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);