Składnia:
argument operator_porównania ALL (podzapytanie)
Słowo ALL które musi wystąpić po operatorze porównania, znaczy: zwróć prawdę (TRUE) jeśli porównanie jest prawdziwe dla wszystkich wierszy, które zwraca podzapytanie.
Na przykład patrz listing 1.0.
Przypuśćmy, że w tablicy tab1 jest wiersz zawierający wartość (10) w kolumnie col1. Powyższe wyrażenie jest prawdziwe (TRUE) jeśli tablica tab2 zawiera (-5,0,+5), gdyż oczywiście 10 jest większe od każdej z tych trzech wartości tablicy tab2. Wyrażenie to będzie nieprawdziwe (FALSE jeśli tablica tab2 zawiera (12,6,NULL,-100), gdyż wartość 12 z tablicy tab2 jest większe od 10. Powyższe wyrażenie ma wartość UNKNOWN jeśli tablica tab2 zawiera (0,NULL,1)
Ponadto, jeśli tablica tab2 jest pusta, to wynikiem powyższego zapytania będzie TRUE. Można by się spodziewać, że wynik powinien być UNKNOWN, jednak w tym wypadku wynik jest zawsze TRUE. Tak więc w przykładzie z listingu 2.0 wynik jest równy TRUE
Natomiast poniższe wyrażenie ma wartość UNKNOWN jeśli tab2 jest pusta: listing 3.0.
Ponadto, następujące wyrażenie ma wartość UNKNOWN jeśli tab2 jest pusta:listing 4.0.
Listing
SELECT col1 FROM tab1 WHERE col1 > ALL (SELECT col1 FROM tab2);
--Listing 2.0 - wynik równy TRUE
SELECT * FROM tab1 WHERE 1 > (SELECT col1 FROM tab2);
-Listing 3.0 - wynik równy UNKNOWN
SELECT * FROM tab1 WHERE 1 > (SELECT col1 FROM tab2);
-Listing 4.0 - wynik równy UNKNOWN
SELECT * FROM tab1 WHERE 1 > ALL (SELECT MAX(col1) FROM tab2);
Ranga: Administrator serwisu Punktów: 0