Salt la conținutul principal
Modulul 4 · Lecția 1 din 413/57 în curs~8 min
Lecții din modul (1/4)

Liste și intervale: IN și BETWEEN

În modulele anterioare ați filtrat cu WHERE folosind egalități și comparații: salary > 30000, department_id = 1, hired_on >= '2020-01-01'. Dar când condiția devine "valoarea trebuie să fie una dintre aceste cinci", OR înlănțuite:

SQL
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM   employees
WHERE  department_id = 1
   OR  department_id = 2
   OR  department_id = 3;

SQL oferă două comenzi rapide pentru a face acest lucru lizibil.

IN — „una dintre acestea”

Operatorul IN (...) preia o listă de valori și returnează true dacă coloana este egală cu oricare dintre ele:

SQL
SELECT first_name, last_name, department_id
FROM   employees
WHERE  department_id IN (1, 2, 3);

Este identic din punct de vedere semantic cu OR-urile de mai sus, dar mult mai lizibil: este se citește în mod natural ca "unde department_id este în (1, 2, 3)". De asemenea, funcționează cu șiruri și date:

SQL
SELECT name
FROM   departments
WHERE  city IN ('Milano', 'Roma');

Există și NOT IN (...), care face opusul:

SQL
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM   employees
WHERE  department_id NOT IN (1, 2);

BETWEEN — „între A și B, ambele inclusiv”

Când condiția este un interval continuu (numere, date), în loc de scriind column >= A AND column <= B ai BETWEEN A AND B:

SQL
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM   employees
WHERE  salary BETWEEN 30000 AND 50000;

BETWEEN este inclusiv pentru ambele puncte finale. Funcționează foarte frumos cu si date:

SQL
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM   employees
WHERE  hired_on BETWEEN '2020-01-01' AND '2020-12-31';

Încearcă

Exercițiu#sql.m4.l1.e1
Încercări: 0Se încarcă…

Afișați numele (prenume), numele (numele) și salariul (salariul) angajaților cu un salariu între 30000 și 50000 inclusiv. Trei coloane.

Se încarcă editorul...
Afișează indiciu

Utilizați ÎNTRE 30000 ȘI 50000 — mai compact și mai ușor de citit decât două comparații unite prin AND.

Soluție disponibilă după 3 încercări

Exercițiu de revizuire

Exercițiu#sql.m4.l1.e2
Încercări: 0Se încarcă…

Listați prenumele (prenume) și numele (numele) angajaților care lucrează în departamentele 1, 2 sau 4 (utilizați IN). Ordonați alfabetic după nume de familie.

Se încarcă editorul...
Afișează indiciu

WHERE Department_id IN (1, 2, 4) este versiunea compactă a trei SAU.

Soluție disponibilă după 3 încercări