gibt es mit dem SELECT-Befehl die Möglichkeit NUR den zuletzt angelegten Eintrag “Paul” abzufragen (also den mit ID=2).
SELECT * FROM tabellenname WHERE name=Paul AND id=2;
funktioniert natürlich. Jedoch möchte ich diesen “Umweg” über die id Spalte vermeiden.
Woher weisst du (und woher soll die Datenbank wissen), das ID=2 der letzte Eintrag ist?
Wenn du nur einer Nummer nach sortieren willst, nutze einen Serial Datentyp. Ansonsten bau einen Timestamp in deine Tabelle ein und setze den Wert beim Einfügen automatisch. Genügend Beispiele, wie man das mit einem Trigger löst, gibt es im Netz.
ich glaube ich hätte mein Problem etwas ausführlicher schildern sollen:
Ich habe wie gesagt eine Tabelle mit den Namen:
id | name | …
1 | Paul | …
2 | Paul | …
3 | Horst | …
4 | Paul | …
die id wurde hierbei automatisch erzeugt.das ganze soll nun in zwei Tabellen aufgeteilt werden, eine Tabelle mit den ids mit Paul, eine Tabelle mit den ids von Horst.
id | Paul_id
1 | 1
2 | 2
3 | 4
und
id | Horst_id
1 | 3
die jeweils erste Spalte (id) wird wieder automatisch per serial erzeugt.
Versuche ich es mit dem Befehl:
INSERT INTO tabellenname (Paul_id) VALUES ((SELECT id FROM tabellenname WHERE name = ‘Paul’))
bekomme ich die meldung: more then one row returned by a subquery used as an expression … was auch logisch ist.
Gibt es einen anderen Weg ?