sql >> Database teknologi >  >> RDS >> SQLite

SQLite INTERSECT Operator

I SQLite er INTERSECT operator bruges til at oprette en sammensat SELECT sætning, der returnerer skæringspunktet mellem resultaterne af venstre og højre SELECT udsagn. Med andre ord kombinerer den to forespørgsler, men returnerer kun de rækker, der returneres i begge forespørgsler.

Eksempel

Antag, at vi har følgende tabeller:

SELECT * FROM Employees;
SELECT * FROM Customers;

Resultat:

EmployeeId  EmployeeName
----------  ------------
1           Bart        
2           Jan         
3           Ava         
4           Rohit       
5           Monish      
6           Monish      
7           Monish      

CustomerId  CustomerName
----------  ------------
1           Mia         
2           Rohit       
3           Peter       
4           Ava         
5           Monish      
6           Monish      

Vi kan bruge INTERSECT operatør til at returnere medarbejdere, der også er kunder:

SELECT EmployeeName FROM Employees
INTERSECT
SELECT CustomerName FROM Customers;

Resultat:

EmployeeName
------------
Ava         
Monish      
Rohit       

Så vi får kun værdier, der vises i Employees tabel, der også vises i Customers bord.

SQLites implementering af INTERSECT operatør returnerer kun distinkte rækker. Så ovenstående eksempel returnerer kun én række for Monish, selvom der er flere ansatte og flere kunder med det navn.

Andre RDBMS'er giver os mulighed for at inkludere dubletter i resultatet ved at acceptere en valgfri ALL søgeord med deres INTERSECT operatør, men det gør SQLite ikke (i hvert fald ikke i skrivende stund). Du er velkommen til at tjekke SQLites dokumentation, hvis noget ændrer sig.

En alternativ forespørgsel

Det er muligt at få det samme resultat uden at bruge INTERSECT operatør. For eksempel kunne vi omskrive vores første eksempel til dette:

SELECT 
    DISTINCT EmployeeName
FROM Employees e
WHERE EXISTS (SELECT CustomerName FROM Customers c
WHERE e.EmployeeName = c.CustomerName);

Resultat:

EmployeeName
------------
Ava         
Rohit       
Monish      

  1. Høj tilgængelighed på et begrænset budget - implementering af en minimal MySQL Galera Cluster med to knudepunkter

  2. Oracle-klient ORA-12541:TNS:ingen lytter

  3. Få dagsnavnet fra en dato i PostgreSQL

  4. Brug af SQL Server som billedlager