Wie kombiniert man SELECT DISTINCT und ROWNUM in für Oracle-Abfragen
Brauche ich um die beiden zu verbinden MySQL-Anweisungen unten in einer einzigen ORACLE-Abfrage, wenn möglich.
Durch die erste Abfrage ist
SELECT DISTINCT FIRST_NAME FROM PEOPLE WHERE LAST_NAME IN ("Smith","Jones","Gupta")
dann basierend auf den einzelnen FIRST_NAME kehrte ich Abfrage
SELECT *
FROM PEOPLE
WHERE FIRST_NAME = {FIRST_NAME}
AND LAST_NAME IN ("Smith","Jones","Gupta")
ORDER BY FIELD(LAST_NAME, "Smith","Jones","Gupta") DESC
LIMIT 1
Die "Liste der Nachnamen" dient als "Standard /override" - Kennzeichen, so dass ich nur eine person für jeden ersten Namen, und wo mehrere Zeilen für die gleiche Vornamen existieren, wird nur das Letzte Spiel aus der Liste der "Letzten Namen" verwendet wird.
Brauche ich eine SQL-Abfrage, gibt die Letzte Zeile aus dem "in" - Klausel basierend auf der Reihenfolge der Werte in der IN(a,b,c). Hier ist eine Beispiel-Tabelle, und die Ergebnisse, die ich brauche aus der Abfrage.
Für die Tabelle PERSONEN, mit Werten
LAST_NAME FIRST_NAME
.....
Smith Mike
Smith Betty
Smith Jane
Jones Mike
Jones Sally
....
Brauche ich eine Abfrage basierend auf die DISTINCT VORNAME und NACHNAME IN ('Smith','Jones') zurückgibt
Betty Smith
Jane Smith
Mike Jones
Sally Jones
- Bitte Bearbeiten Sie die Frage mit den sample-Daten und die gewünschten Ergebnisse. Es ist nicht klar, was Sie versuchen zu erreichen. Ich erkenne
field()
als MySQL-Funktion nicht einer Oracle-Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kannst du es so machen:
Demo: SQL Fiddle
BEARBEITEN
Es ist nicht schwer zu bekommen, mehr Spalten. Ich bin sicher, Sie könnten es herausgefunden haben, mit ein bisschen mehr Aufwand:
Oder so:
Oracle "ERSTE"/"LETZTE" - Funktionen ermöglichen, um Werte aus anderen Spalten der Zeile mit maximum/minimum-Wert (zum Beispiel Nachname des Mitarbeiters mit dem maximalen Gehalt, oder wie in diesem Fall - bekommen, last_name from-Zeile mit maximalem Rang)
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions056.htm