Die Datenbankstruktur ist nicht optimal aufgebaut, also geht es darum, das Beste aus dem aktuellen Zustand herauszuholen.Finde den zuletzt eingegebenen Datensatz - Postgresql
Ich möchte nur die letzte eingefügte Datensatz mit einem Zeichenfeld als id finden
CREATE TABLE find
(id varchar(8),date date);
INSERT INTO find
(id,date)
VALUES
('X','2017-10-01'),
('Y','2017-10-01'),
('A','2017-10-01');
ich den letzten Datensatz finden möchte, die ‚A‘ ist
SELECT max(id)
FROM find
den gemeinsame Verwendung von max bekommt ‚Y‘ als Antwort
Was ich suche ist eine magische versteckte Transaktions-ID wie
SELECT max(transaction_id)
FROM find
Drei Fragen:
- Ist es möglich, letzten Datensatz 'A' ohne Zeitstempel zu finden?
- Kostet der Zeitstempel mehr als ein einfaches Datum?
- Andere Lösungen?
Fiddle: http://sqlfiddle.com/#!15/60b68/1
TIA,
Es gibt kein magisches verstecktes Transaktionsfeld. Tatsächlich muss Postgres die "A" -Datei nicht einmal so erscheinen lassen, wie sie zuletzt erscheint, denn selbst wenn Sie 'ORDER BY date' verwenden würden, wäre es frei, diese drei Datensätze in beliebiger Reihenfolge zu platzieren. Wenn Sie eine Bestellung benötigen, die über das hinausgeht, was "Datum" bieten kann, wäre das Hinzufügen einer weiteren Spalte wahrscheinlich die beste langfristige Lösung. –