Loading:


Używanie EXISTS oraz NOT EXISTS - MySQL

Jeśli podzapytanie zwraca jakąkolwiek wartość, wtedy wyrażenie EXISTS podzapytanie zwraca wartość TRUE, natomiast NOT EXISTS podzapytanie zwraca FALSE.

 

Na przykład (patrz listing 1.0).

 

 

W przykładzie tym, jeśli tab2 zawiera jakiekolwiek wiersze, nawet wiersze, kóre nie zwierają nic innego poza wartością NULL wtedy warunek EXISTS jest zawsze równy TRUE.

Następne przykłady:

 

 

  • Jaki rodzaj sklepu występuje w jednym lub więcej miejscowościach? (patrz listing 2.0)

  • Jakiego rodzaju sklepu nie ma w żadnym mieście? (patrz listing3.0)

  • Jaki rodzaj sklepu występuje we wszystkich miastach? (patrz listing 4.0)

 

W ostatnim przykładzie mamy podwójnie zagnieżdżone zapytanie z NOT EXISTS. Formalnie, to zapytanie to brzmi: "czy istnieje miasto ze sklepem, którego nie ma wśród sklepów"? Ale można też prościej zapytać po prostu: "czy x jest prawdziwe dla wszystkich y"?



Napisz Artyku³

Listing

--Listing 1.0
SELECT col1 FROM tab1 WHERE EXISTS (SELECT * FROM tab2);

--Listing 2.0
SELECT DISTINCT rodzaj_sklepu FROM sklepy
     WHERE EXISTS (SELECT * FROM miasta_sklepy
       WHERE miasta_sklepy.rodzaj_sklepu = sklepy.rodzaj_sklepu);  

--Listing 3.0
SELECT DISTINCT rodzaj_sklepu FROM sklepy
     WHERE NOT EXISTS (SELECT * FROM miasta_sklepy
       WHERE miasta_sklepy.rodzaj_sklepu = sklepy.rodzaj_sklepu);

--Listing 4.0
SELECT DISTINCT rodzaj_sklepu FROM Stores S1
     WHERE NOT EXISTS (
       SELECT * FROM miasta WHERE NOT EXISTS (
        SELECT * FROM miasta_sklepy
         WHERE miasta_sklepy.miasto = miasta.miasto
          AND miasta_sklepy.rodzaj_sklepu = sklepy.rodzaj_sklepu));




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