2017-06-28 5 views
0

Ich habe versucht, nach einer Lösung zu suchen, konnte aber keine finden. Ich denke, es ist einfach SQL, aber ich kann es nicht herausfinden.SQL Rückgabewert basierend auf dem niedrigsten Wert in einer anderen Spalte

ich eine Tabelle namens Menschen habe, diese Tabelle mehrere Spalten:

ID Firstname Lastname Birthdate 
1 John  Stevenson 1860-07-30 
2 Eric  Johnson 1918-08-25 
3 Adam  Efron  1914-02-02 
4 Michael Gray  1870-07-18 

Jetzt will ich eine Abfrage machen, die an dem Geburtstag Spalte sieht, findet den niedrigsten Wert und gibt den Vornamen der Person, die hat das niedrigste Geburtsdatum (ist am ältesten). Kann mich jemand in die richtige Richtung führen? Vielen Dank im voraus!

+0

Wo ist Ihre Anfrage? – Eric

+0

Leider habe ich vergessen, das hinzuzufügen und jetzt habe ich es gelöscht: -/ – user1088537

Antwort

3

Verwenden order by wie

select Firstname 
from people 
order by Birthdate 
limit 1 
+0

Der Vollständigkeit halber sollte darauf hingewiesen werden, dass Sie dies in 'DESC' tun können, um dasselbe zu erreichen, um das höchste Geburtsdatum zu finden (ist das jüngste):' SELECT Vorname FROM Personen ORDER BY Geburtsdatum DESC LIMIT 1' –

+0

Danke das funktioniert ausgezeichnet. Was mache ich, um diejenigen auszuschließen, deren Geburtsdatum 00: 00: 000 ist? – user1088537

+1

@ user1088537, fügen Sie eine 'where' Bedingung hinzu, die besagt' where BirthDate <> '00: 00: 000'' – Rahul

2

Dies wird für 2 Personen mit dem gleichen Geburtsdatum verantwortlich sein und 2 Zeilen zurückgeben.

select Firstname 
from people 
where birthdate = (select min(birthdate) from people); 
+0

Danke, das funktioniert ausgezeichnet. Was mache ich, um diejenigen auszuschließen, deren Geburtsdatum 00: 00: 000 ist? – user1088537

0

Eine andere Möglichkeit, es zu tun wäre, effizient diese (sqlfiddle) sein:

select p.*, min(p.birthdate) from people p; 

HINWEIS: Sie erhalten 1 zusätzliche Spalte in der Ausgabe haben.

Verwandte Themen