![]() |
Datenbank: MySQL • Version: 5.7 • Zugriff über: Delphi (API)
MySQL Zeilenindex
Hallo,
habe hier eine Tabelle: Id Text 0 abc 1 lmn 2 xyz Bisher habe ich eine Zeile ausgelesen oder gelöscht mit: SELECT * FROM Tabelle1 WHERE Id = 0 //hier also die Zeile mit Id=0 und auch Index=0 Nun habe ich die Tabelle so verändert: Id Text 1 lmn 2 xyz Mit obiger Query findet er die Zeile jetzt natürlich nicht mehr. Wie kann ich im Query angeben, das ich die Zeile mit dem Index=0 (1 lmn, also erste Zeile der Tabelle) auslesen oder löschen will? Danke und beste Grüße |
AW: MySQL Zeilenindex
definiere was für dich die erste Zeile in dieser Tabelle definiert?
Ich vermute den Eintrag mit dem kleinsten Wert für die Spalte ID also
Code:
damit ist der Löschbefehl
select min(id) from tabelle1
Code:
delete from tabelle1 where id = (select min(id) from tabelle1
|
AW: MySQL Zeilenindex
Zitat:
Ich baue die Id so: 'CREATE TABLE '+TableName+'(id INT NOT NULL AUTO_INCREMENT, '... Somit wird die id immer aufsteigend sein (da ich sie nie selber setze). Also ist select min(id) from tabelle1 die Lösung. Danke und beste Grüße |
AW: MySQL Zeilenindex
Zitat:
Gruß K-H |
AW: MySQL Zeilenindex
Also kann auf die Tabellenzeilen nicht (etwa wie in einer StringList) über den Index zugreifen?
|
AW: MySQL Zeilenindex
Nein, nur über den Inhalt.
Wenn die ID eindeutig ist, was bei Auto_Increment ja der Fall ist, wäre die kleinste ID wie oben beschrieben zu finden. Aber:
SQL-Code:
liefert eine andere Sortierung und damit muss der erste Satz im Abfrageergebnis noch lange nicht der mit der kleinsten ID sein.
select id, text from tabelle1 order by text
|
AW: MySQL Zeilenindex
Pedantisch:
Der Begriff "Index" hat hier in diesem Zusammenhang im Datenbankbereich nichts verloren. Der Datenbank-Index ist ein Hilfskonstrukt, das den Datenzugriff beschleunigen soll. Das hat nichts mit konkreten Werten zu tun. Die Existenz eines Spalten-Index (als Datenbankbegriff) hat keinerlei Einfluss auf Funktion und fachliches / logisches Verhalten, Werte oder sonstwas. Es geht dabei nur um Performance. Hier ist (wenn überhaupt) von einem Schlüssel (Key) die Rede, falls definiert, ansonsten kann man lediglich von einem kleinsten Wert ausgehen bzw. sprechen. (Den kann man meinetwegen noch als logischen Schlüsselwert bezeichnen). "Kleinster Wert" ist wiederum eindeutig von der Begrifflichkeit, unabhängig von der Sortierung. "Erster Wert" ist nicht(!) eindeutig, da er von der Sortierung abhängig ist, also quasi situationsabhängig. Das Löschen des "ersten Wertes" macht also nur unter strengen Bedingungen Sinn, z.B. wenn über eine Tabelle ein FIFO oder ähnliches realisiert werden soll. Ansonsten ist es jedenfalls angesagt, mit fachlich korrekt eingesetzten, konkreten Schlüsseln (Schlüsselwerten)zu arbeiten. Auch das Löschen des kleinsten Wertes, was fachlich erwünscht sein kann, ist bspw. in einer Mehrbenutzerumgebung kritisch zu betrachten. |
AW: MySQL Zeilenindex
Zitat:
Wenn genügend Benutzer da sind, löscht jeder den kleinsten Wert, und schwupp ist nichts mehr da? Gruß K-H |
AW: MySQL Zeilenindex
Ja, z.b. ist nichts mehr da, im schlimmsten Fall. Was aber schon eine massive Fehlfunktionen wäre. (Die wahrscheinlich auch schnell auffällt)
Die "Kleinheit" ist ja eine Frage der Perspektive. Wenn mehrere Nutzer den gleichen Arbeitsschritt durchführen und das Timing möglichst ungünstig, wer löscht dann welchen Wert? Kann un-erheblich sein, kann aber auch zu Fehlern führen. |
AW: MySQL Zeilenindex
Da Du einen solchen Blödsinn mit einrechnest scheint es um Datenbanken schlimmer zu stehen als ich gedacht habe.
:wall: :wall: :wall: Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz