U prethodnim lekcijama obrađeni su podupiti koji vraćaju jednu vrednost, kao i poređenje svih vrednosti podupita pomoću operatora ALL. Međutim, u praksi se često javlja potreba da se proveri da li neka vrednost ispunjava uslov u odnosu na bar jednu vrednost iz skupa koji vraća podupit. U takvim situacijama koristi se operator ANY.

Operator ANY omogućava poređenje jedne vrednosti sa skupom vrednosti koje vraća podupit, pri čemu je uslov zadovoljen ako je poređenje tačno za makar jednu vrednost iz tog skupa. Zbog toga se ANY često koristi kada nije potrebno zadovoljiti uslov za sve vrednosti, već je dovoljno da postoji barem jedan odgovarajući slučaj.


Značenje operatora ANY

Kada se koristi operator ANY, SQL proverava da li je uslov poređenja ispunjen u odnosu na najmanje jednu vrednost koju vraća podupit. Ako takva vrednost postoji, uslov u glavnom upitu se smatra tačnim.

Opšti oblik SQL naredbe sa operatorom ANY je:

SELECT kolone
FROM tabela
WHERE kolona operator ANY (SELECT kolona FROM tabela);

Operator ANY se uvek koristi zajedno sa operatorima poređenja, kao što su >, <, =, >=, <= ili <>.


Primer baze podataka

U primerima se koristi tabela Zaposleni sa kolonama: ID, Ime, Plata, Odeljenje (kao u prethodnim lekcijama)


Primer 1: Plata veća od bar jedne plate u HR odeljenju

Zadatak je pronaći zaposlene čija je plata veća od barem jedne plate zaposlenih u HR odeljenju.

SELECT Ime, Plata
FROM Zaposleni
WHERE Plata > ANY (
    SELECT Plata
    FROM Zaposleni
    WHERE Odeljenje = 'HR'
);

U ovom primeru uslov je ispunjen ako postoji makar jedan zaposleni u HR odeljenju čija je plata manja od plate zaposlenog iz glavnog upita.


Primer 2: Plata manja od bar jedne plate u IT odeljenju

Sledeći primer prikazuje zaposlene čija je plata manja od barem jedne plate zaposlenih u IT odeljenju.

SELECT Ime, Plata
FROM Zaposleni
WHERE Plata < ANY (
    SELECT Plata
    FROM Zaposleni
    WHERE Odeljenje = 'IT'
);

Ovaj upit pronalazi zaposlene koji imaju platu nižu od najmanje jedne plate u IT odeljenju.


Primer 3: Jednako nekoj vrednosti iz podupita

Operator ANY se može koristiti i sa operatorom jednako, kada je potrebno proveriti da li se vrednost pojavljuje u rezultatu podupita.

SELECT Ime, Plata
FROM Zaposleni
WHERE Plata = ANY (
    SELECT Plata
    FROM Zaposleni
    WHERE Odeljenje = 'HR'
);

Ovim upitom se pronalaze zaposleni čija je plata jednaka plati nekog zaposlenog iz HR odeljenja.


Povezanost operatora ANY i agregatnih funkcija

Korišćenje operatora ANY često se može povezati sa agregatnim funkcijama. Na primer:

  • uslov > ANY je sličan poređenju sa minimalnom vrednošću,

  • uslov < ANY je sličan poređenju sa maksimalnom vrednošću.

Ipak, ANY ostaje korisna opcija kada se želi jasno naglasiti poređenje sa skupom vrednosti, a ne sa jednom agregiranom vrednošću.


Napomene
  • Podupit korišćen uz ANY mora vratiti jednu kolonu, ali može vratiti više redova.

  • Uslov je ispunjen ako postoji makar jedna vrednost iz podupita koja zadovoljava poređenje.

  • Operator ANY se često poistovećuje sa operatorom SOME, koji ima isto značenje u SQL jeziku.


Razlika između ALL i ANY

Dok operator ALL zahteva da uslov bude ispunjen za sve vrednosti koje vraća podupit, operator ANY zahteva ispunjenje uslova za makar jednu vrednost. Zbog toga se ANY koristi u situacijama kada je dovoljan jedan odgovarajući slučaj, dok se ALL koristi kada je potrebno potpuno slaganje sa celim skupom podataka.


Zadaci za samostalan rad
  1. Pronaći zaposlene čija je plata veća od bar jedne plate zaposlenih u IT odeljenju.

  2. Prikazati zaposlene čija je plata manja ili jednaka bar jednoj plati zaposlenih u HR odeljenju.

  3. Napisati upit koji pronalazi zaposlene čija je plata jednaka nekoj plati zaposlenih u IT odeljenju.

Poslednja izmena: среда, 4. фебруар 2026, 14:36