De SQL DISTINCT-query wordt gebruikt om unieke waarden uit de tabellen op te halen met behulp van de SELECT-instructie in de SQL.
Er kan zich een situatie voordoen waarin u de unieke waarden uit de tabellen wilt ophalen, maar er zijn ook dubbele waarden in de tabel. In dat geval moet u de SELECT DISTINCT-query gebruiken om dubbele waarden te verwijderen en unieke waarden uit de tabel op te halen.
Syntaxis van SELECT DISTINCT-instructie:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Overweeg de bestaande werknemerstabellen die de volgende records hebben:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORAKLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORAKLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | TESTEN | 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 | TESTEN | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
Laten we de SELECT DISTINCT begrijpen aan de hand van een voorbeeld.
Voorbeeld 1: Schrijf een zoekopdracht om werknemersgegevens op te halen wiens werknemerssalaris hoger is dan 55000 zonder het DISTINCT-zoekwoord te gebruiken.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
In de bovenstaande verklaring hebben we de werknemersgegevens opgehaald uit de werknemerstabel waarvan het werknemerssalaris hoger is dan 55000, inclusief de dubbele waarden.
De uitvoer voor de volgende verklaring:
WERKNEMER-ID | FIRST_NAME | LAST_NAME | SALARIS | STAD | AFDELING | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORAKLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORAKLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORAKLE | 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 | TESTEN | 4 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORAKLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
Het bovenstaande resultaat laat zien dat we de werknemersgegevens hebben opgehaald, inclusief dubbele waarden.
Voorbeeld 2: Schrijf een zoekopdracht om het werknemerssalaris weer te geven van de werknemerstabel waarvan het werknemerssalaris hoger is dan 55000 met behulp van het DISTINCT-zoekwoord.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
In de bovenstaande verklaring halen we het werknemerssalaris op uit de tabel van de werknemer wiens salaris hoger is dan 55000, waarbij we de dubbele waarden elimineren. Het onderscheidende salaris toont het unieke salaris uit de tabel van de werknemer.
De uitvoer voor de volgende verklaring:
SALARIS |
65000 |
60000 |
55500 |
65500 |
58500 |
60500 |
In het eerste voorbeeld hebben we de werknemersgegevens opgehaald wiens salaris hoger is dan 55000. Het zoekresultaat bevat dubbele waarden. Maar in het tweede voorbeeld voeren we dezelfde zoekopdracht uit om het werknemerssalaris weer te geven wiens salaris hoger is dan 55000. De zoekopdracht geeft het resultaat weer en elimineert de dubbele waarden omdat we het DISTINCT-sleutelwoord hebben gebruikt gevolgd door de salariskolom.
Voorbeeld 3: Schrijf een zoekopdracht om de woonplaats en het salaris van de werknemer uit de tabel met werknemers weer te geven zonder een apart trefwoord te gebruiken.
SELECT SALARY, CITY FROM EMPLOYEES;
We hebben het salaris van de werknemer en de plaatsnaam uit de tabel van de werknemer weergegeven in de bovenstaande verklaring, inclusief dubbele waarden.
De uitvoer voor de volgende verklaring:
SALARIS | STAD |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
65500 | PUNE |
50000 | MUMBAI |
55500 | PUNE |
50500 | JAIPUR |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Voorbeeld 4: Schrijf een zoekopdracht om de woonplaats en het salaris van de werknemer uit de werknemerstabel weer te geven met verschillende trefwoorden.
SELECTEER EEN ONDERSCHEIDEN SALARIJE, STAD VAN WERKNEMERS;
We hebben het werknemerssalaris en de woonplaats opgehaald uit de werknemerstabel in de bovenstaande verklaring. Maar we hebben een unieke waarde opgehaald die niet in de hele tabel wordt herhaald met het trefwoord DISTINCT.
De uitvoer voor de volgende verklaring:
SALARIS | STAD |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
50000 | MUMBAI |
55500 | PUNE |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Voorbeeld 5: Schrijf een zoekopdracht om de achternaam en afdeling van een medewerker weer te geven uit de tabel van de medewerker waarbij de afdelingsnaam begint met 'O' zonder het trefwoord DISTINCT te gebruiken;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
In de bovenstaande verklaring hebben we de achternaam van de werknemers, afdelingen opgehaald uit de werknemerstabel van die werknemers wiens afdelingsnamen beginnen met 'O', inclusief dubbele waarden.
De uitvoer voor de volgende verklaring:
LAST_NAME | AFDELING |
MISHRA | ORAKLE |
SHARMA | ORAKLE |
SHARMA | ORAKLE |
AGARWAL | ORAKLE |
Er worden slechts vier records weergegeven van de medewerkers van wie de afdeling met 'O' begint.
Voorbeeld 6: Schrijf een zoekopdracht om de achternaam en afdeling van een medewerker weer te geven uit de tabel van de medewerker waarbij de afdelingsnaam begint met 'O' met behulp van het DISTINCT-sleutelwoord;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
We hebben dezelfde zoekopdracht gebruikt in voorbeeld 5, alleen het DISTINCT-sleutelwoord toegevoegd net voor de kolomnaam die unieke waarden zal weergeven uit de tabel van de werknemer waarvan de afdelingsnaam begint met 'O'.
De uitvoer voor de volgende verklaring:
LAST_NAME | AFDELING |
MISHRA | ORAKLE |
SHARMA | ORAKLE |
AGARWAL | ORAKLE |
Dezelfde zoekopdracht die we hebben uitgevoerd in de bovenstaande zoekopdracht, we hebben het DISTINCT-sleutelwoord net voor kolommen toegevoegd. De uitvoer die we krijgen verschilt van het bovenstaande voorbeeld omdat de resultaatweergave unieke waarden heeft.
Voorbeeld 7: Schrijf een zoekopdracht om het werknemerssalaris uit de werknemerstabel te tellen zonder een apart trefwoord te gebruiken.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
In de bovenstaande verklaring hebben we het totale aantal salarissen uit de tabel van de werknemer geteld, inclusief dubbele waarden.
De uitvoer voor de volgende verklaring:
TOTAAL SALARIS |
13 |
Voorbeeld 8: Schrijf een zoekopdracht om het werknemerssalaris uit de werknemerstabel te tellen met behulp van een onderscheidend trefwoord.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
In de bovenstaande verklaring hebben we het totale aantal salarissen geteld uit de tabel van de werknemer, exclusief dubbele waarden.
De uitvoer voor de volgende verklaring:
TOTAAL SALARIS |
8 |