Die SQL DISTINCT-Abfrage wird verwendet, um mithilfe der SELECT-Anweisung in SQL eindeutige Werte aus den Tabellen abzurufen.
Es kann vorkommen, dass Sie die eindeutigen Werte aus den Tabellen abrufen möchten, aber auch doppelte Werte in der Tabelle vorhanden sind. In einem solchen Fall sollten Sie die Abfrage SELECT DISTINCT verwenden, um doppelte Werte zu eliminieren und eindeutige Werte aus der Tabelle abzurufen.
Syntax der Anweisung SELECT DISTINCT:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Betrachten Sie die vorhandenen Mitarbeitertabellen mit den folgenden Datensätzen:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT | ABTEILUNG | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACLE | 1 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUSCHIKA | JAIN | 50000 | MUMBAI | TESTEN | 4 |
3001 | PRANOTI | SCHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOLD | 60500 | MUMBAI | TESTEN | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUSCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
Lassen Sie uns das SELECT DISTINCT anhand eines Beispiels verstehen.
Beispiel 1: Schreiben Sie eine Abfrage, um Mitarbeiterdetails abzurufen, deren Mitarbeitergehalt höher als 55000 ist, ohne das Schlüsselwort DISTINCT zu verwenden.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
In der obigen Anweisung haben wir die Mitarbeiterdetails aus der Mitarbeitertabelle abgerufen, deren Mitarbeitergehalt größer als 55000 ist, einschließlich der doppelten Werte.
Die Ausgabe für die folgende Anweisung:
MITARBEITERID | FIRST_NAME | NACHNAME | GEHALT | STADT | ABTEILUNG | MANAGERID |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
3001 | PRANOTI | SCHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOLD | 60500 | MUMBAI | TESTEN | 4 |
4003 | RUSCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTEN | 4 |
Das obige Ergebnis zeigt, dass wir die Mitarbeiterdetails abgerufen haben, einschließlich doppelter Werte.
Beispiel 2: Schreiben Sie eine Abfrage, um das Mitarbeitergehalt aus der Mitarbeitertabelle anzuzeigen, deren Mitarbeitergehalt größer als 55000 ist, und verwenden Sie das Schlüsselwort DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
In der obigen Anweisung rufen wir das Mitarbeitergehalt aus der Tabelle des Mitarbeiters ab, dessen Gehalt größer als 55000 ist, wobei wir die doppelten Werte eliminieren. Eindeutiges Gehalt zeigt ein eindeutiges Gehalt aus der Tabelle des Mitarbeiters an.
Die Ausgabe für die folgende Anweisung:
GEHALT |
65000 |
60000 |
55500 |
65500 |
58500 |
60500 |
Im ersten Beispiel haben wir die Mitarbeiterdetails abgerufen, deren Gehalt über 55000 liegt. Das Abfrageergebnis enthält doppelte Werte. Aber im zweiten Beispiel führen wir dieselbe Abfrage aus, um das Gehalt eines Mitarbeiters anzuzeigen, dessen Gehalt größer als 55000 ist. Die Abfrage zeigt das Ergebnis an und eliminiert die doppelten Werte, da wir das Schlüsselwort DISTINCT gefolgt von der Gehaltsspalte verwendet haben.
Beispiel 3: Schreiben Sie eine Abfrage, um die Stadt und das Gehalt der Mitarbeiter aus der Mitarbeitertabelle anzuzeigen, ohne ein eindeutiges Schlüsselwort zu verwenden.
SELECT SALARY, CITY FROM EMPLOYEES;
Wir haben das Gehalt des Mitarbeiters und den Namen der Stadt aus der Tabelle des Mitarbeiters in der obigen Anweisung angezeigt, einschließlich doppelter Werte.
Die Ausgabe für die folgende Anweisung:
GEHALT | STADT |
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 |
Beispiel 4: Schreiben Sie eine Abfrage, um die Stadt und das Gehalt des Mitarbeiters aus der Mitarbeitertabelle mit unterschiedlichen Schlüsselwörtern anzuzeigen.
WÄHLEN SIE UNTERSCHIEDLICHES GEHALT, STADT VON MITARBEITERN AUS;
Wir haben das Mitarbeitergehalt und die Stadt aus der Mitarbeitertabelle in der obigen Anweisung abgerufen. Aber wir haben mit dem Schlüsselwort DISTINCT einen eindeutigen Wert abgerufen, der sich nicht in der gesamten Tabelle wiederholt.
Die Ausgabe für die folgende Anweisung:
GEHALT | STADT |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
50000 | MUMBAI |
55500 | PUNE |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Beispiel 5: Schreiben Sie eine Abfrage, um den Nachnamen und die Abteilung eines Mitarbeiters aus der Tabelle des Mitarbeiters anzuzeigen, wobei der Name der Abteilung mit „O“ beginnt, ohne das Schlüsselwort DISTINCT zu verwenden;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
In der obigen Anweisung haben wir die Nachnamen und Abteilungen der Mitarbeiter aus der Mitarbeitertabelle der Mitarbeiter abgerufen, deren Abteilungsnamen mit „O“ beginnen, einschließlich doppelter Werte.
Die Ausgabe für die folgende Anweisung:
NACHNAME | ABTEILUNG |
MISHRA | ORACLE |
SHARMA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Von den Mitarbeitern, deren Abteilung mit 'O' beginnt, werden nur vier Datensätze angezeigt.
Beispiel 6: Schreiben Sie eine Abfrage, um den Nachnamen und die Abteilung eines Mitarbeiters aus der Tabelle des Mitarbeiters anzuzeigen, wobei der Abteilungsname mit „O“ beginnt, und verwenden Sie das Schlüsselwort DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Wir haben dieselbe Abfrage in Beispiel 5 verwendet, nur das Schlüsselwort DISTINCT direkt vor dem Spaltennamen hinzugefügt, das eindeutige Werte aus der Tabelle des Mitarbeiters anzeigt, dessen Abteilungsname mit „O“ beginnt.
Die Ausgabe für die folgende Anweisung:
NACHNAME | ABTEILUNG |
MISHRA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Dieselbe Abfrage, die wir in der obigen Abfrage ausgeführt haben, wir haben das Schlüsselwort DISTINCT direkt vor den Spalten hinzugefügt. Die Ausgabe, die wir erhalten, unterscheidet sich vom obigen Beispiel, da die Ergebnisanzeige eindeutige Werte hat.
Beispiel 7: Schreiben Sie eine Abfrage, um das Mitarbeitergehalt aus der Mitarbeitertabelle zu zählen, ohne ein eindeutiges Schlüsselwort zu verwenden.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
In der obigen Anweisung haben wir die Gesamtzahl der Gehälter aus der Mitarbeitertabelle gezählt, einschließlich doppelter Werte.
Die Ausgabe für die folgende Anweisung:
GEHALT GESAMT |
13 |
Beispiel 8: Schreiben Sie eine Abfrage zum Zählen des Mitarbeitergehalts aus der Mitarbeitertabelle mit einem eindeutigen Schlüsselwort.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
In der obigen Anweisung haben wir die Gesamtzahl der Gehälter aus der Mitarbeitertabelle gezählt, ohne doppelte Werte.
Die Ausgabe für die folgende Anweisung:
GEHALT GESAMT |
8 |