SQL DISTINCT-frågan används för att hämta unika värden från tabellerna med hjälp av SELECT-satsen i SQL.
Det kan finnas en situation som uppstår när du vill hämta de unika värdena från tabellerna, men dubblettvärden finns också inne i tabellen. I sådana fall bör du använda SELECT DISTINCT-frågan för att eliminera dubbletter av värden och hämta unika värden från tabellen.
Syntax för SELECT DISTINCT-satsen:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Tänk på den befintliga medarbetarens tabeller som har följande poster:
ANSTÄLLDA ID | FIRST_NAME | LAST_NAME | LÖN | STAD | AVDELNING | 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 | TESTER | 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 | TESTER | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTER | 4 |
Låt oss förstå SELECT DISTINCT med hjälp av ett exempel.
Exempel 1: Skriv en fråga för att hämta anställdsuppgifter vars anställdas lön är högre än 55 000 utan att använda nyckelordet DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
I ovanstående uttalande har vi hämtat personaluppgifterna från den anställdes tabell vars anställdas lön är högre än 55 000, inklusive dubblettvärdena.
Utdata för följande sats:
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 |
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 | TESTER | 4 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTER | 4 |
Resultatet ovan visar att vi har hämtat de anställdas detaljer, inklusive dubbletter av värden.
Exempel 2: Skriv en fråga för att visa anställdas lön från anställdas tabell vars anställdas lön är större än 55 000 med hjälp av DISTINCT nyckelord.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
I ovanstående uttalande hämtar vi personallönen från den anställdes tabell vars lön är större än 55 000, där vi eliminerar dubblettvärdena. Distinkt lön kommer att visa unik lön från den anställdes bord.
Utdata för följande sats:
LÖN |
65 000 |
60 000 |
55500 |
65500 |
58500 |
60500 |
I det första exemplet har vi hämtat personaluppgifter vars lön är högre än 55 000. Frågeresultatet innehåller dubbletter av värden. Men i det andra exemplet kör vi samma fråga för att visa anställdas lön vars lön är högre än 55 000. Frågan visar resultatet och eliminerar dubblettvärdena eftersom vi använde nyckelordet DISTINCT följt av lönekolumnen.
Exempel 3: Skriv en fråga för att visa anställdas stad och lön från anställdas tabell utan att använda ett distinkt nyckelord.
SELECT SALARY, CITY FROM EMPLOYEES;
Vi har visat anställdas lön och ortsnamn från den anställdes tabell i ovanstående uttalande, inklusive dubbletter av värden.
Utdata för följande sats:
LÖN | STAD |
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 |
Exempel 4: Skriv en fråga för att visa anställdas stad och lön från anställdas tabell med hjälp av distinkta nyckelord.
VÄLJ DISTINKT LÖN, STAD FRÅN ANSTÄLLDA;
Vi har hämtat anställdas lön och stad från personaltabellen i ovanstående uttalande. Men vi har hämtat ett unikt värde som inte upprepas i hela tabellen med nyckelordet DISTINCT.
Utdata för följande sats:
LÖN | STAD |
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 |
Exempel 5: Skriv en fråga för att visa en anställds efternamn och avdelning från den anställdes tabell där avdelningsnamnet börjar med 'O' utan att använda nyckelordet DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
I ovanstående uttalande hämtade vi anställdas efternamn, avdelningar från den anställdes tabell över de anställda vars avdelningsnamn börjar med "O", inklusive dubbletter av värden.
Utdata för följande sats:
LAST_NAME | AVDELNING |
MISHRA | ORACLE |
SHARMA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Endast fyra poster visas över de anställda vars avdelning börjar med 'O'.
Exempel 6: Skriv en fråga för att visa en anställds efternamn och avdelning från den anställdes tabell där avdelningsnamnet börjar med 'O' med hjälp av nyckelordet DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Vi har använt samma fråga i exempel 5, precis lagt till nyckelordet DISTINCT precis före kolumnnamnet som kommer att visa unika värden från medarbetarens tabell vars avdelningsnamn börjar med 'O'.
Utdata för följande sats:
LAST_NAME | AVDELNING |
MISHRA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Samma fråga som vi har kört i ovanstående fråga, vi lade till nyckelordet DISTINCT precis före kolumner. Resultatet vi får skiljer sig från exemplet ovan eftersom resultatvisningen har unika värden.
Exempel 7: Skriv en fråga för att räkna anställdas lön från anställdas tabell utan att använda ett distinkt nyckelord.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
I ovanstående uttalande har vi räknat det totala antalet löner från den anställdes tabell, inklusive dubbletter av värden.
Utdata för följande sats:
TOTALLÖN |
13 |
Exempel 8: Skriv en fråga för att räkna anställdas lön från anställdas tabell med ett distinkt nyckelord.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
I ovanstående uttalande har vi räknat det totala antalet löner från den anställdes tabell, exklusive dubbletter av värden.
Utdata för följande sats:
TOTALLÖN |
8 |