SQL DISTINCT-forespørgslen bruges til at hente unikke værdier fra tabellerne ved hjælp af SELECT-sætningen i SQL.
Der kan være en situation, der opstår, når du vil hente de unikke værdier fra tabellerne, men duplikerede værdier er også til stede inde i tabellen. I sådanne tilfælde skal du bruge SELECT DISTINCT-forespørgslen til at eliminere duplikerede værdier og hente unikke værdier fra tabellen.
Syntaks for SELECT DISTINCT-sætning:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Overvej den eksisterende medarbejders tabeller, som har følgende poster:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | TEST | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TEST | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
Lad os forstå SELECT DISTINCT ved hjælp af et eksempel.
Eksempel 1: Skriv en forespørgsel for at hente medarbejderoplysninger, hvis medarbejderløn er større end 55.000 uden at bruge søgeordet DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
I ovenstående erklæring har vi hentet medarbejderoplysningerne fra medarbejderens tabel, hvis medarbejderløn er større end 55.000, inklusive de duplikerede værdier.
Outputtet for følgende sætning:
EMPLOYEEID | FIRST_NAME | LAST_NAME | LØN | BY | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65.000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TEST | 4 |
4003 | RUCHIKA | AGARWAL | 60.000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TEST | 4 |
Ovenstående resultat viser, at vi har hentet medarbejdernes detaljer, inklusive duplikerede værdier.
Eksempel 2: Skriv en forespørgsel for at vise medarbejderløn fra medarbejdertabel, hvis medarbejderløn er større end 55.000 ved hjælp af DISTINCT nøgleord.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
I ovenstående opgørelse henter vi medarbejderlønnen fra medarbejderens tabel, hvis løn er større end 55.000, hvor vi eliminerer duplikatværdierne. Distinkt løn vil vise unik løn fra medarbejderens tabel.
Outputtet for følgende sætning:
LØN |
65.000 |
60.000 |
55500 |
65500 |
58500 |
60500 |
I det første eksempel har vi hentet medarbejderoplysningerne, hvis løn er større end 55.000. Forespørgselsresultatet indeholder duplikerede værdier. Men i det andet eksempel udfører vi den samme forespørgsel for at vise medarbejderløn, hvis løn er større end 55.000. Forespørgslen viser resultatet, der eliminerer de duplikerede værdier, fordi vi brugte DISTINCT søgeordet efterfulgt af lønkolonnen.
Eksempel 3: Skriv en forespørgsel for at vise medarbejderby og løn fra medarbejdertabellen uden at bruge et særskilt søgeord.
SELECT SALARY, CITY FROM EMPLOYEES;
Vi har vist medarbejderens løn og bynavn fra medarbejderens tabel i ovenstående erklæring, inklusive duplikerede værdier.
Outputtet for følgende sætning:
LØN | BY |
65500 | PUNE |
60.000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
65500 | PUNE |
50.000 | MUMBAI |
55500 | PUNE |
50500 | JAIPUR |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60.000 | DELHI |
55500 | DELHI |
Eksempel 4: Skriv en forespørgsel for at vise medarbejderby og løn fra medarbejdertabellen ved hjælp af forskellige søgeord.
VÆLG DISTINKT LØN, BY FRA MEDARBEJDERE;
Vi har hentet medarbejderens løn og by fra medarbejdertabellen i ovenstående opgørelse. Men vi har hentet en unik værdi, der ikke gentages i hele tabellen ved hjælp af DISTINCT nøgleordet.
Outputtet for følgende sætning:
LØN | BY |
65500 | PUNE |
60.000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
50.000 | MUMBAI |
55500 | PUNE |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60.000 | DELHI |
55500 | DELHI |
Eksempel 5: Skriv en forespørgsel for at vise en medarbejders efternavn og afdeling fra medarbejderens tabel, hvor afdelingsnavnet starter med 'O' uden at bruge nøgleordet DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
I ovenstående erklæring hentede vi medarbejdernes efternavne, afdelinger fra medarbejderens tabel over de medarbejdere, hvis afdelingsnavne starter med 'O', inklusive duplikerede værdier.
Outputtet for følgende sætning:
LAST_NAME | AFDELING |
MISHRA | ORACLE |
SHARMA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Der vises kun fire poster over de medarbejdere, hvis afdeling starter med 'O'.
Eksempel 6: Skriv en forespørgsel for at vise en medarbejders efternavn og afdeling fra medarbejderens tabel, hvor afdelingsnavnet starter med 'O' ved at bruge DISTINCT nøgleordet;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Vi har brugt den samme forespørgsel i eksempel 5, bare tilføjet DISTINCT-søgeordet lige før kolonnenavnet, der vil vise unikke værdier fra medarbejderens tabel, hvis afdelingsnavn starter med 'O'.
Outputtet for følgende sætning:
LAST_NAME | AFDELING |
MISHRA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Den samme forespørgsel, som vi har udført i ovenstående forespørgsel, tilføjede DISTINCT søgeordet lige før kolonner. Det output, vi får, adskiller sig fra ovenstående eksempel, fordi resultatvisningen har unikke værdier.
Eksempel 7: Skriv en forespørgsel for at tælle medarbejderløn fra medarbejdertabellen uden at bruge et særskilt søgeord.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
I ovenstående opgørelse har vi talt det samlede antal lønninger fra medarbejderens tabel, inklusive duplikerede værdier.
Outputtet for følgende sætning:
SAMLET LØN |
13 |
Eksempel 8: Skriv en forespørgsel for at tælle medarbejderløn fra medarbejdertabellen ved at bruge et særskilt søgeord.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
I ovenstående opgørelse har vi talt det samlede antal lønninger fra medarbejderens tabel, eksklusive duplikerede værdier.
Outputtet for følgende sætning:
SAMLET LØN |
8 |