Loading:


Podzapytania z ALL - MySQL

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.



Napisz Artyku³

Listing

--Listing 1.0
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);




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38523
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors