Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

MySQL Insert Anfang der Tabelle

piepmax - 38
Profi (offline)

Dabei seit 04.2006
794 Beiträge
Geschrieben am: 12.01.2011 um 13:47 Uhr

Hallo,
ich habe ein kleines Problem.
Und zwar möchte ich per Insert Befehl einen neuen Eintrag in eine MySQL Tabelle einfügen.
Soweit kein Problem.
MySQL hängt den Eintrag aber immer an das Ende der Tabelle.
Ich möchte den Eintrag vor den ersten Eintrag setzen, also an den Anfang der Tabelle.
Wär toll wenn mir jemand helfen könnte.

Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.

tbird_ulm - 44
Profi (offline)

Dabei seit 08.2007
651 Beiträge

Geschrieben am: 12.01.2011 um 13:49 Uhr

warum?

du sortierst / selektierst doch eh anschliessend deine daten ...

Wissen ist Macht. Nix wissen macht aber auch nix ...

DinoRS1337 - 29
Profi (offline)

Dabei seit 09.2010
831 Beiträge
Geschrieben am: 12.01.2011 um 13:53 Uhr

genau, du hast ja mit Sicherheit eine eindeutige ID oder timestamp mit dem du bei der abfrage die Reihenfolge deines Resultset beeinflussen kannst.
piepmax - 38
Profi (offline)

Dabei seit 04.2006
794 Beiträge
Geschrieben am: 12.01.2011 um 13:53 Uhr

Es geht um eine Art Nachrichtensystem.
Und die neueste Nachricht soll logischerweise oben und nicht unten angezeigt werden.
Der Aufwand wäre am kleinsten wenn sich das ganze mit einem MySQL Befehl lösen lassen würde.

Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.

Klischeepunk - 41
Champion (offline)

Dabei seit 01.2005
8907 Beiträge

Geschrieben am: 12.01.2011 um 13:53 Uhr

Zitat von piepmax:

Hallo,
ich habe ein kleines Problem.
Und zwar möchte ich per Insert Befehl einen neuen Eintrag in eine MySQL Tabelle einfügen.
Soweit kein Problem.
MySQL hängt den Eintrag aber immer an das Ende der Tabelle.
Ich möchte den Eintrag vor den ersten Eintrag setzen, also an den Anfang der Tabelle.
Wär toll wenn mir jemand helfen könnte.

WTF... o.o
Nicht sinn und zweck der datenbank und unmöglich.

Dieser Post wurde 2 mal ROT-13 verschlüsselt.

tbird_ulm - 44
Profi (offline)

Dabei seit 08.2007
651 Beiträge

Geschrieben am: 12.01.2011 um 13:54 Uhr

Zitat von piepmax:

Es geht um eine Art Nachrichtensystem.
Und die neueste Nachricht soll logischerweise oben und nicht unten angezeigt werden.
Der Aufwand wäre am kleinsten wenn sich das ganze mit einem MySQL Befehl lösen lassen würde.


gib, wie gesagt, einen timestamp oder eine eindeutige ID mit und sortiere nach dieser.



Wissen ist Macht. Nix wissen macht aber auch nix ...

h3mpti - 38
Profi (offline)

Dabei seit 05.2007
878 Beiträge

Geschrieben am: 12.01.2011 um 13:55 Uhr

Abgesehen davon, dass es denke ich keinen vernünftigen Anwendungsfall für die Problemstellung gibt ;-) :
Hat dein Primary Key die Eigenschaft AUTO_INCREMENT?
Falls nein:
vor dem Insert alle Ids in der Tabelle um eins Hochzählen (Es muss aber mit der höchsten ID begonnen werden, da sonst MySQL rummeckert wegen der unique verletzung).
Danach ein Insert mit der Id 1.
Allerdings, wie oben schon erwähnt, ist eine Sortierung im SELECT-Statement sinnvoller ..
bredator - 41
Champion (offline)

Dabei seit 03.2008
5319 Beiträge

Geschrieben am: 12.01.2011 um 13:55 Uhr
Zuletzt editiert am: 12.01.2011 um 13:56 Uhr

Zitat von piepmax:

Es geht um eine Art Nachrichtensystem.
Und die neueste Nachricht soll logischerweise oben und nicht unten angezeigt werden.
Der Aufwand wäre am kleinsten wenn sich das ganze mit einem MySQL Befehl lösen lassen würde.


ORDER BY...
Empfehlenswert ist zusätzlich ein Buch, um das Prinzip und die Funktionsweise einer Datenbank und deren Abfragemöglichkeiten zu verstehen.

Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.

DinoRS1337 - 29
Profi (offline)

Dabei seit 09.2010
831 Beiträge
Geschrieben am: 12.01.2011 um 13:57 Uhr

Zitat von bredator:



ORDER BY...


ASC (jedenfalls in MSSQL :-P )
Page666 - 46
Profi (offline)

Dabei seit 07.2005
612 Beiträge
Geschrieben am: 12.01.2011 um 13:58 Uhr

Wie wär's mit "select last_insert_id..."?

https://www.youtube.com/user/wormcluster

bredator - 41
Champion (offline)

Dabei seit 03.2008
5319 Beiträge

Geschrieben am: 12.01.2011 um 13:58 Uhr

Zitat von DinoRS1337:

Zitat von bredator:



ORDER BY...


ASC (jedenfalls in MSSQL :-P )


In dem Fall aber DESC, wenn die neueste, nach ID sortiert, oben stehen soll.

Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.

piepmax - 38
Profi (offline)

Dabei seit 04.2006
794 Beiträge
Geschrieben am: 12.01.2011 um 14:00 Uhr

Ok, Danke :-)
Ich werde die Einträge jetzt einfach von dem Frontend-Programm andersrum auflisten lassen.
Hat sich somit erledigt und kann geschlossen werden.

Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.

DinoRS1337 - 29
Profi (offline)

Dabei seit 09.2010
831 Beiträge
Geschrieben am: 12.01.2011 um 14:02 Uhr

damn du hast Recht, ist mir auch gerade aufgefallen dass ich das verdreht hab :-)
Ketzu - 39
Experte (offline)

Dabei seit 11.2008
1535 Beiträge
Geschrieben am: 12.01.2011 um 17:22 Uhr
Zuletzt editiert am: 12.01.2011 um 17:23 Uhr

Dem ganzen liegt schon der Fehlschluss zugrunde das die Datenbank als Tabelle gespeichert wird und nur hinten etwas angehängt wird.
Speicherung in einer Datenbank sieht (idr) allerdings anders aus. Z.B. als B(*)-Baum, ISAM, oder sonstwie, dabei gibt es kein "vorne" oder "hinten" und wenn man keine Sortierung angibt, sind die Ergebnisse meist zufällig, nach einem Standardparameter Sortiert (z.B. aufsteigend nach dem Primärschlüssel) oder von der verwendeten Engine abhängig (z.B. INNODB oder MyISAM bei MySQL)

Eine Sortierung irgendeiner Art wie hier gewünscht hat auf jeden Fall durch das Select Statement formuliert zu werden, da ein verlassen auf eine zuverlässige Einfügung reiner Zufall sein kann oder durch andere Fehler produziert werden könnte und keinesfalls irgendwie sicher ist.

Deine Frage ist die Gelegenheit für dich, etwas mehr über SQL/MySQL zu lernen und nicht "ne ich will nicht" zu sagen und irgendeine Rundherum Lösung zu suchen, weil auch schlechter Code irgendwie ja doch funktioniert.

Eine Meinung vertreten, heißt nicht sie zu teilen, sondern versuchen sie zu verstehen.

piepmax - 38
Profi (offline)

Dabei seit 04.2006
794 Beiträge
Geschrieben am: 12.01.2011 um 18:37 Uhr

Zitat von Ketzu:

Dem ganzen liegt schon der Fehlschluss zugrunde das die Datenbank als Tabelle gespeichert wird und nur hinten etwas angehängt wird.
Speicherung in einer Datenbank sieht (idr) allerdings anders aus. Z.B. als B(*)-Baum, ISAM, oder sonstwie, dabei gibt es kein "vorne" oder "hinten" und wenn man keine Sortierung angibt, sind die Ergebnisse meist zufällig, nach einem Standardparameter Sortiert (z.B. aufsteigend nach dem Primärschlüssel) oder von der verwendeten Engine abhängig (z.B. INNODB oder MyISAM bei MySQL)

Eine Sortierung irgendeiner Art wie hier gewünscht hat auf jeden Fall durch das Select Statement formuliert zu werden, da ein verlassen auf eine zuverlässige Einfügung reiner Zufall sein kann oder durch andere Fehler produziert werden könnte und keinesfalls irgendwie sicher ist.

Deine Frage ist die Gelegenheit für dich, etwas mehr über SQL/MySQL zu lernen und nicht "ne ich will nicht" zu sagen und irgendeine Rundherum Lösung zu suchen, weil auch schlechter Code irgendwie ja doch funktioniert.

Ich verwende jetzt vor dem auslesen einfach den SQL Befehl einer deiner Vorschreiber um die Tabelle zu sortieren.

Die Feder ist mächtiger als das Schwert - Die Ignoranz gefährlicher als das Messer.

  [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -