App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
[MySql] neusten Datensatz einer Tabelle Abfragen
- Ersteller benny17
- Erstellt am
moin,
ich hab folgendes problem:
ich möchte mir auf meiner page den inhalt einer bestimmten spalte des jeweilig neusten datensatzes in meiner tabelle abfragen und dann pe php ausgeben lassen.
doch wie kann ich das per mysql abfrage geschict lösen?
ich habe es bis jetzt so gelöst:
ich frage per select alle daten in der tabelle ab, zähle sie anschließend mit count durch und anhand des countergebnisses habe ich dann die anzahl, ergo auch die id (den primärschlüssel) . mit SELECT titel FROM tbl_test WHERE id=$count; habe ich dann mein gewünschtes ergebnis, jedoch recht umständlich und unkomportabel für den fall, dass mal ein datensatz gelöscht wird. dann würde das countergebnis ja nciht mehr mit der neusten id übereinstimmen, da auto_increment dies ja nicht berücksichtigt...
also ich suche einfach eine abfrage möglichkeit, die mir den neusten datensatz ausspuckt. am besten wäre da ein kommando, was die höchse id findet. hoffe ich bekomm hier ne hilfreiche antwort
ich hab folgendes problem:
ich möchte mir auf meiner page den inhalt einer bestimmten spalte des jeweilig neusten datensatzes in meiner tabelle abfragen und dann pe php ausgeben lassen.
doch wie kann ich das per mysql abfrage geschict lösen?
ich habe es bis jetzt so gelöst:
ich frage per select alle daten in der tabelle ab, zähle sie anschließend mit count durch und anhand des countergebnisses habe ich dann die anzahl, ergo auch die id (den primärschlüssel) . mit SELECT titel FROM tbl_test WHERE id=$count; habe ich dann mein gewünschtes ergebnis, jedoch recht umständlich und unkomportabel für den fall, dass mal ein datensatz gelöscht wird. dann würde das countergebnis ja nciht mehr mit der neusten id übereinstimmen, da auto_increment dies ja nicht berücksichtigt...
also ich suche einfach eine abfrage möglichkeit, die mir den neusten datensatz ausspuckt. am besten wäre da ein kommando, was die höchse id findet. hoffe ich bekomm hier ne hilfreiche antwort
Hey Benny,
das sollte eigentlich sehr simpel gehen:
SELECT MAX(id) FROM tbl_test; und schon hast du deine max id
SELECT titel FROM tbl_test WHERE id=$max_id;
Wahrscheinlich kann man beide Abfragen sogar schachteln, aber grad komm ich spontan nicht drauf
MfG,
ThreeD
das sollte eigentlich sehr simpel gehen:
SELECT MAX(id) FROM tbl_test; und schon hast du deine max id
SELECT titel FROM tbl_test WHERE id=$max_id;
Wahrscheinlich kann man beide Abfragen sogar schachteln, aber grad komm ich spontan nicht drauf
MfG,
ThreeD
Chris_Bear
Admiral Special
Als nur 1 Abfrage sieht das Ganze z.B. so aus:
SELECT titel FROM tbl_test ORDER BY id DESC LIMIT 1;
Wie man das mit MAX schachtelt weiß ich such grad nicht...
Gruß,
Chris
SELECT titel FROM tbl_test ORDER BY id DESC LIMIT 1;
Wie man das mit MAX schachtelt weiß ich such grad nicht...
Gruß,
Chris
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Hey Benny,
das sollte eigentlich sehr simpel gehen:
SELECT MAX(id) FROM tbl_test; und schon hast du deine max id
SELECT titel FROM tbl_test WHERE id=$max_id;
Wahrscheinlich kann man beide Abfragen sogar schachteln, aber grad komm ich spontan nicht drauf
MfG,
ThreeD
Das kann man (ab MySQL 4.1) so zusammenfassen:
SELECT titel FROM tbl_test WHERE id=(SELECT MAX(id) FROM tbl_test);
Gruß,
BoMbY
Steelmaster
Admiral Special
- Mitglied seit
- 02.07.2006
- Beiträge
- 1.177
- Renomée
- 3
- Mein Laptop
- VAIO FE-41 M
- Prozessor
- Athlon X2 6400+
- Mainboard
- Asrock ALiveNF5-eSATA2+
- Kühlung
- Scythe Mine
- Speicher
- 4 GB
- Grafikprozessor
- MSI Geforce 7900 GTO
- Display
- 22", Chimei CMV 222H, 1680x1050
- HDD
- WD Caviar Black
- Optisches Laufwerk
- LG GSA-4167B
- Soundkarte
- onboard Realtek ALC888
- Gehäuse
- Thermaltake Shark
- Netzteil
- Sharkoon Silentstorm 480W
- Betriebssystem
- Win 7 RC1
- Webbrowser
- Firefox 3
SELECT LAST_INSERT_ID()
funktioniert auch supi
funktioniert auch supi
Chris_Bear
Admiral Special
Wie sieht da die genaue Syntax aus? wird bei mir nix:SELECT LAST_INSERT_ID()
funktioniert auch supi
select last_insert_id() --> gibt mir "0" aus
select last_insert_id() from table --> gibt mir so oft "0" aus wie's Zeilen in der Tabelle gibt
select last_insert_id(id) from table --> gibt mir dasselbe aus wie select id from table
id ist ne Auto_Increment spalte.
Irgend ne Idee?
BoMbY
Grand Admiral Special
- Mitglied seit
- 22.11.2001
- Beiträge
- 7.468
- Renomée
- 293
- Standort
- Aachen
- Prozessor
- Ryzen 3700X
- Mainboard
- Gigabyte X570 Aorus Elite
- Kühlung
- Noctua NH-U12A
- Speicher
- 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3600 16-16-16-32-48-1T
- Grafikprozessor
- RX 5700 XTX
- Display
- Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
- SSD
- AORUS NVMe Gen4 SSD 2TB, Samsung 960 EVO 1TB, Samsung 840 EVO 1TB, Samsung 850 EVO 512GB
- Optisches Laufwerk
- Sony BD-5300S-0B (eSATA)
- Gehäuse
- Phanteks Evolv ATX
- Netzteil
- Enermax Platimax D.F. 750W
- Betriebssystem
- Windows 10
- Webbrowser
- Firefox
Wie sieht da die genaue Syntax aus? wird bei mir nix:
select last_insert_id() --> gibt mir "0" aus
select last_insert_id() from table --> gibt mir so oft "0" aus wie's Zeilen in der Tabelle gibt
select last_insert_id(id) from table --> gibt mir dasselbe aus wie select id from table
id ist ne Auto_Increment spalte.
Irgend ne Idee?
Die Funktion funktioniert nur direkt nach einem Insert-Statement, auf eine Tabelle mit einem Auto-Increment-Key.
http://www.mysql.org/doc/refman/5.1/de/example-auto-increment.html:
Sie können den aktuellen AUTO_INCREMENT-Wert mit der SQL-Funktion LAST_INSERT_ID() oder der C-API-Funktion mysql_insert_id() abrufen. Diese Funktionen sind verbindungsspezifisch, d. h., ihre Rückgabewerte werden nicht durch eine andere Verbindung beeinträchtigt, die ebenfalls Einfügeoperationen durchführt.
Zuletzt bearbeitet:
Chris_Bear
Admiral Special
Ah, danke. Wieder was gelernt!
Steelmaster
Admiral Special
- Mitglied seit
- 02.07.2006
- Beiträge
- 1.177
- Renomée
- 3
- Mein Laptop
- VAIO FE-41 M
- Prozessor
- Athlon X2 6400+
- Mainboard
- Asrock ALiveNF5-eSATA2+
- Kühlung
- Scythe Mine
- Speicher
- 4 GB
- Grafikprozessor
- MSI Geforce 7900 GTO
- Display
- 22", Chimei CMV 222H, 1680x1050
- HDD
- WD Caviar Black
- Optisches Laufwerk
- LG GSA-4167B
- Soundkarte
- onboard Realtek ALC888
- Gehäuse
- Thermaltake Shark
- Netzteil
- Sharkoon Silentstorm 480W
- Betriebssystem
- Win 7 RC1
- Webbrowser
- Firefox 3
ja genau, LAST_INSERT_ID() funktioniert nur direkt nach einem INSERT.
Ist dann aber eigentlich besser als ein Konstrukt mit MAX. Gerade bei häufigen INSERTS könnte man sonst schon eine ID "zuweit" erwischen.
Aber für Dein spezifisches Problem ist MAX wohl besser.
Ich würde allerdings bei jedem Datensatz einen Timestamp (DATE_TIME) mit abspeichern - mit NOW() - , so kann man sehr elegant den neuesten Eintrag ermitteln und es ist eigentlich meist interessant wann genau ein Datensatz angelegt wurde. Aus DATE_TIME kannst Du auch alles denkbare extrahieren (Jahr, Monat, Tag, Wochentag, Stunde, Woche ....).
Ist dann aber eigentlich besser als ein Konstrukt mit MAX. Gerade bei häufigen INSERTS könnte man sonst schon eine ID "zuweit" erwischen.
Aber für Dein spezifisches Problem ist MAX wohl besser.
Ich würde allerdings bei jedem Datensatz einen Timestamp (DATE_TIME) mit abspeichern - mit NOW() - , so kann man sehr elegant den neuesten Eintrag ermitteln und es ist eigentlich meist interessant wann genau ein Datensatz angelegt wurde. Aus DATE_TIME kannst Du auch alles denkbare extrahieren (Jahr, Monat, Tag, Wochentag, Stunde, Woche ....).
Ähnliche Themen
- Antworten
- 0
- Aufrufe
- 107K
- Antworten
- 0
- Aufrufe
- 103K