MySQL ELKE en ALLE operators
De MySQL ELKE en ALLE operators
Met de operators ANY
en ALL
kunt u een vergelijking uitvoeren tussen een enkele kolomwaarde en een reeks andere waarden.
De ELKE exploitant
De ANY
exploitant:
- geeft als resultaat een booleaanse waarde
- geeft WAAR terug als EEN van de subquerywaarden aan de voorwaarde voldoet
ANY
betekent dat de voorwaarde waar is als de bewerking waar is voor een van de waarden in het bereik.
ELKE Syntaxis
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ANY
(SELECT column_name
FROM table_name
WHERE
condition);
Opmerking: de operator moet een standaardvergelijkingsoperator zijn (=, <>, !=, >, >=, < of <=).
De ALL-operator
De ALL
exploitant:
- geeft als resultaat een booleaanse waarde
- geeft WAAR terug als ALLE waarden van de subquery aan de voorwaarde voldoen
- wordt gebruikt met
SELECT
,WHERE
enHAVING
statements
ALL
betekent dat de voorwaarde alleen waar is als de bewerking waar is voor alle waarden in het bereik.
ALL-syntaxis met SELECT
SELECT ALL column_name(s)
FROM table_name
WHERE
condition;
ALL Syntaxis Met WHERE of HAVING
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
Opmerking: de operator moet een standaardvergelijkingsoperator zijn (=, <>, !=, >, >=, < of <=).
Demodatabase
Hieronder vindt u een selectie uit de tabel "Producten" in de Northwind-voorbeelddatabase:
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 |
En een selectie uit de tabel "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 ELKE Voorbeelden
De volgende SQL-instructie geeft de ProductName weer als ELKE records in de OrderDetails-tabel een hoeveelheid hebben die gelijk is aan 10 (dit retourneert TRUE omdat de kolom Hoeveelheid enkele waarden van 10 heeft):
Voorbeeld
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
De volgende SQL-instructie geeft de ProductName weer als ELKE records in de OrderDetails-tabel een hoeveelheid groter dan 99 hebben (dit retourneert TRUE omdat de kolom Hoeveelheid enkele waarden heeft die groter zijn dan 99):
Voorbeeld
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
De volgende SQL-instructie geeft de ProductName weer als ELKE records in de OrderDetails-tabel een hoeveelheid groter dan 1000 hebben (dit retourneert FALSE omdat de kolom Hoeveelheid geen waarden heeft die groter zijn dan 1000):
Voorbeeld
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
SQL ALL-voorbeelden
De volgende SQL-instructie vermeldt ALLE productnamen:
Voorbeeld
SELECT ALL ProductName
FROM Products
WHERE TRUE;
De volgende SQL-instructie geeft de ProductName weer als ALLE records in de tabel OrderDetails Hoeveelheid gelijk aan 10 hebben. Dit zal natuurlijk FALSE retourneren omdat de kolom Hoeveelheid veel verschillende waarden heeft (niet alleen de waarde 10):
Voorbeeld
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);