sql >> Databasteknik >  >> RDS >> Database

SQL förutom

I SQL använder vi förmodligen JOIN-satsen för att ta emot det kombinerade resultatet från en eller fler än en tabell. Men ibland vill vi ha ett resultat som innehåller data från en tabell, och posten ska inte vara tillgänglig i den andra tabellen. I så fall har SQL begreppsnamnet SQL Except.

För att rena data från mer än en tabell använde vi SQL Except. SQL Except är samma som minusoperatorn vi gör i matematik. SQL Except slår först samman de två eller fler än två SELECT-satserna i frågan och returnerar data från den första SELECT-satsen. Vi är inte tillgängliga i ett annat SELECT-uttrycksresultat.

SQL UTOM regler

Vi bör förstå alla regler och föreskrifter innan vi använder EXCEPT-frågan i SQL:

  • Antalet och ordningen på kolumner i den givna tabellen måste vara samma i hela SELECT-frågan.
  • Kolumnens datatyp måste vara densamma eller kompatibel.

Syntaxen för SQL EXCEPT

SELECT * FROM table1 EXCEPT SELECT * FROM table2;

Tabell1 och Tabell2 kommer att vara namnet på tabeller.

Exempel:

Antag att vi har två tabeller med samma antal kolumner och kolumnernas ordning.

  • Tabell 1:T1, Antal kolumner:3, Data:A, B, C, D
  • Tabell 2:T2, Antal kolumner:3, Data:B, D, F, G

När vi kör EXCEPT-frågan på dessa två tabeller kommer vi att få A och C eftersom dessa två data inte finns i tabell T2, B och D är vanliga i båda tabellerna, som förkastas.

Låt oss förstå SQL UTOM koncept med exempel. Betrakta följande tabeller tillsammans med de givna posterna.

Tabell1:Emp

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 VAIBHAVI MISHRA 65 000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60 000 NOIDA ORACLE 1
1003 NIKHIL VANI 50 000 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50 000 MUMBAI TESTER 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA VAR 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4

Tabell2:Anställd

ANSTÄLLDA ID FIRST_NAME LAST_NAME LÖN STAD AVDELNING MANAGERID
1001 Vaibhav Sharma 65 000 PUNE ORACLE 1
1002 Nikhil Vani 60 000 NOIDA ORACLE 1
1003 Vaibhavi Mishra 50 000 JAIPUR FMW 2
2001 Ruchika Jain 55500 CHANDIGARH ORACLE 1
2002 Prachi Sharma 65500 PUNE FMW 2
2003 Bhavesh Jain 50 000 MUMBAI TESTER 4
3001 Deepam Jauhari 55500 PUNE JAVA 3
3002 ANUJA VAR 50500 JAIPUR FMW 2
3003 Pranoti Shende 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTER 4

Tabell3:Manager

Managerid manager_name manager_department
1 Snehdeep Kaur ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Anupam Mishra TESTER

Tabell4:Manager1

Managerid manager_name manager_department
1 Ishita Agrawal ORACLE
2 Kirti Kirtane FMW
3 Abhishek Manish JAVA
4 Paul Oakip TESTER

Exempel 1: Anta att vi vill sammanfoga de två ovanstående tabellerna Emp och Employee i vår SELECT-fråga med operatorn EXCEPT.

SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID;

Vi använder INNER JOIN-klausulen mellan Emp- och Employee-tabellen där vi visar medarbetar-ID, namn, stad, avdelning, chefs-ID och chefsnamn med UTOM operatorn. Ovanstående fråga visar endast de unika värdena mellan båda tabellerna.

Ovanstående fråga ger följande utdata:

Om vi ​​observerar tabelldata finns det två vanliga data mellan båda tabellerna Emp table och Employee table, d.v.s. anställd-id 3002 och 4001. Anställd-id 4001-detaljer visas förutom 3002. Eftersom anställd-id 3002 är chefens namn detsamma i båda tabellerna. och Chef1 men medarbetar-id 4001 Chefsnamn är olika i båda tabellerna, information om anställd-id 4002 visas.

Exempel 2: Anta att vi vill sammanfoga de två ovanstående tabellerna Emp och Employee i vår SELECT-fråga med operatorn EXCEPT och sortera resultatet efter deras lön i fallande ordning. Vi kommer att använda ORDER BY-satsen för att sortera resultatuppsättningen i SQL-frågan.

SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID ORDER BY SALARY;

Frågan ovan visar följande utdata:

Exempel 3: Anta att vi vill sammanfoga de två ovanstående tabellerna Emp och Employee i vår SELECT-fråga med EXCEPT operatorn där anställdas lön över 55 000 från Emp-tabellen och anställds stad inkluderar 'Pune', 'Mumbai', 'Jaipur' från Employee-tabellen.

SELECT * FROM EMP WHERE SALARY > 55000 EXCEPT SELECT * FROM EMPLOYEE WHERE CITY IN ('Pune', 'Mumbai', 'Jaipur');   

Ovanstående frågas första SELECT-sats hämtar alla detaljer om de anställda vars lön är högre än 55 000 från Emp-tabellen. Den andra SELECT-satsen hämtar alla detaljer om de anställda vars städer inkluderar Pune, Mumbai, Jaipur från tabellen Anställda. Sedan kommer EXCEPT-operatorn att köras mellan Emp-tabellen och Employee-tabellen.

Detta ger följande utdata:


  1. Hur man tar bort objekt från SQLite-databasen med SQLiteOpenHelper-klassen

  2. Steg för steg uppgraderingsprocess till R12.2 Uppgraderingsdel -2 (Huvuduppgraderingsdrivrutin för R12.2.0)

  3. sqlLiteDatabase.query() för INNER JOIN

  4. SQL Server - Vad händer när en rad i en tabell uppdateras?