MySQL QUALSIASI e TUTTI gli operatori
Gli operatori MySQL ANY e ALL
Gli operatori ANY
e ALL
consentono di eseguire un confronto tra un valore di una singola colonna e un intervallo di altri valori.
L'operatore QUALSIASI
L' ANY
operatore:
- restituisce un valore booleano come risultato
- restituisce TRUE se QUALSIASI dei valori della sottoquery soddisfa la condizione
ANY
significa che la condizione sarà vera se l'operazione è vera per uno qualsiasi dei valori nell'intervallo.
QUALSIASI sintassi
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ANY
(SELECT column_name
FROM table_name
WHERE
condition);
Nota: l' operatore deve essere un operatore di confronto standard (=, <>, !=, >, >=, < o <=).
L'operatore TUTTO
L' ALL
operatore:
- restituisce un valore booleano come risultato
- restituisce TRUE se TUTTI i valori della sottoquery soddisfano la condizione
- è usato con
SELECT
,WHERE
eHAVING
istruzioni
ALL
significa che la condizione sarà vera solo se l'operazione è vera per tutti i valori nell'intervallo.
TUTTO Sintassi Con SELECT
SELECT ALL column_name(s)
FROM table_name
WHERE
condition;
TUTTO Sintassi Con WHERE o HAVING
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition);
Nota: l' operatore deve essere un operatore di confronto standard (=, <>, !=, >, >=, < o <=).
Database dimostrativo
Di seguito è riportata una selezione dalla tabella "Prodotti" nel database di esempio 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 |
E una selezione dalla tabella "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 QUALSIASI Esempi
La seguente istruzione SQL elenca ProductName se trova QUALSIASI record nella tabella OrderDetails ha Quantità uguale a 10 (questo restituirà TRUE perché la colonna Quantità ha alcuni valori di 10):
Esempio
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
La seguente istruzione SQL elenca ProductName se trova QUALSIASI record nella tabella OrderDetails ha Quantità maggiore di 99 (questo restituirà TRUE perché la colonna Quantità ha alcuni valori maggiori di 99):
Esempio
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
La seguente istruzione SQL elenca ProductName se trova QUALSIASI record nella tabella OrderDetails ha una quantità maggiore di 1000 (questo restituirà FALSE perché la colonna Quantità non ha valori maggiori di 1000):
Esempio
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
Esempi di SQL TUTTI
La seguente istruzione SQL elenca TUTTI i nomi dei prodotti:
Esempio
SELECT ALL ProductName
FROM Products
WHERE TRUE;
La seguente istruzione SQL elenca ProductName se TUTTI i record nella tabella OrderDetails hanno Quantità uguale a 10. Questo ovviamente restituirà FALSE perché la colonna Quantità ha molti valori diversi (non solo il valore di 10):
Esempio
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);