Sie müssen SORT BY
etwas tun. Wir müssen Ihr Tabellenschema sehen.
Ich versuche, die IDs von zwei Zeilen in mysql mit PHP zu wechseln - je mehr ich darüber lese, desto verwirrter werde ich. Es scheint eine Menge widersprüchlicher Informationen zu geben. Hat jemand eine definitive Antwort bekommen?
zB im Ausgangszustand sind meine Zeilen
%Vor%und dann möchte ich die IDs der Zeilen 2 und 3 so austauschen, dass es so aussieht
%Vor%so dass, wenn ich es dann mit der ID bestellt hätte, hätte ich
%Vor%Wenn die ID der Primärschlüssel ist, dann möchten Sie ihn nicht ändern / ändern können. Wenn dies nur zum Sortieren ist, würde ich vorschlagen, eine Spalte "Bestellung" zu erstellen ist eine ganze Zahl und sortiert danach. Das Tabellenschema wäre schön zu sehen, aber das ist meine Empfehlung bis jetzt.
Wenn ID automatisch erstellt wird, wenn Zeilen eingegeben werden, ist diese Idee ein noch größeres Problem. Aber jetzt spekuliere ich nur, weil ich Ihr Tabellenschema nicht kenne.
Hier finden Sie einige Standardempfehlungen zu Primärschlüsseln: Denken Sie nicht an irgendetwas außer an eine eindeutige Kennung.
könnte den Trick machen, aber das ist eine schlechte Idee - das Manipulieren / Neuzuweisen von Primärschlüsselwerten ist nie eine gute Idee.
Wenn dies fehlschlägt, liegt das an einer doppelten Schlüsselverletzung (am wahrscheinlichsten), und Sie müssten eine der IDs vorübergehend einem völlig anderen eindeutigen Wert zuweisen, damit während der Neuzuweisung kein Konflikt entsteht in Arbeit - dies würde erfordern, dass Sie mindestens zwei Abfragen verwenden.
Ich möchte unbedingt wissen, warum du es dauerhaft brauchst. Die einzigen Dinge, die ich mir vorstellen kann, sind so, dass Sie die scheinbare Reihenfolge der Ereignisse ändern können.
Wie andere bereits sagten, sind IDs in der Regel Primärschlüssel und werden automatisch nummeriert. Das macht es schwierig, aber der beste Weg, dies zu erreichen, besteht darin, alle Felddaten aus den beiden Elementen in einem Array zu sammeln und jeden Datensatz mit dem UPDATE zu aktualisieren Werte von der anderen.
könnte den Trick machen, aber das ist eine schlechte Idee - das Manipulieren / Neuzuweisen von Primärschlüsselwerten ist nie eine gute Idee.
Wenn dies fehlschlägt, liegt das an einer doppelten Schlüsselverletzung (am wahrscheinlichsten), und Sie müssten eine der IDs vorübergehend einem völlig anderen eindeutigen Wert zuweisen, damit während der Neuzuweisung kein Konflikt entsteht in Arbeit - dies würde erfordern, dass Sie mindestens zwei Abfragen verwenden.
Sie müssen SORT BY
etwas tun. Wir müssen Ihr Tabellenschema sehen.
Swap IDs relativ einfach mit gespeicherten Prozeduren und temporären Tabellen zu implementieren:
%Vor%Aber stellen Sie sich vor, Sie haben die IDs, die von einem anderen Benutzer auf der Client- (Anwendungs-) Seite aktualisiert werden, und nur den Hinweis (für die Anwendung) vertauscht, um zu verstehen, welche rohe ID zu aktualisieren ist. Das wäre ein Albtraum.
Also kann diese Prozedur 100% nützlich sein, wenn nur ein Benutzer benutzt wird.
Eine weitere Möglichkeit besteht darin, alle Spaltenwerte zwischen zwei Zeilen zu aktualisieren (auszutauschen):
%Vor%Es muss noch ein Synchronisationsmechanismus vorhanden sein.
Wenn die ID der Primärschlüssel ist, dann möchten Sie ihn nicht ändern / ändern können. Wenn dies nur zum Sortieren ist, würde ich vorschlagen, eine Spalte "Bestellung" zu erstellen ist eine ganze Zahl und sortiert danach. Das Tabellenschema wäre schön zu sehen, aber das ist meine Empfehlung bis jetzt.
Wenn ID automatisch erstellt wird, wenn Zeilen eingegeben werden, ist diese Idee ein noch größeres Problem. Aber jetzt spekuliere ich nur, weil ich Ihr Tabellenschema nicht kenne.
Hier finden Sie einige Standardempfehlungen zu Primärschlüsseln: Denken Sie nicht an irgendetwas außer an eine eindeutige Kennung.
Ich versuche, die IDs von zwei Zeilen in mysql mit PHP zu wechseln - je mehr ich darüber lese, desto verwirrter werde ich. Es scheint eine Menge widersprüchlicher Informationen zu geben. Hat jemand eine definitive Antwort bekommen?
zB im Ausgangszustand sind meine Zeilen
%Vor%und dann möchte ich die IDs der Zeilen 2 und 3 so austauschen, dass es so aussieht
%Vor%so dass, wenn ich es dann mit der ID bestellt hätte, hätte ich
%Vor%Ich möchte unbedingt wissen, warum du es dauerhaft brauchst. Die einzigen Dinge, die ich mir vorstellen kann, sind so, dass Sie die scheinbare Reihenfolge der Ereignisse ändern können.
Wie andere bereits sagten, sind IDs in der Regel Primärschlüssel und werden automatisch nummeriert. Das macht es schwierig, aber der beste Weg, dies zu erreichen, besteht darin, alle Felddaten aus den beiden Elementen in einem Array zu sammeln und jeden Datensatz mit dem UPDATE zu aktualisieren Werte von der anderen.
Swap IDs relativ einfach mit gespeicherten Prozeduren und temporären Tabellen zu implementieren:
%Vor%Aber stellen Sie sich vor, Sie haben die IDs, die von einem anderen Benutzer auf der Client- (Anwendungs-) Seite aktualisiert werden, und nur den Hinweis (für die Anwendung) vertauscht, um zu verstehen, welche rohe ID zu aktualisieren ist. Das wäre ein Albtraum.
Also kann diese Prozedur 100% nützlich sein, wenn nur ein Benutzer benutzt wird.
Eine weitere Möglichkeit besteht darin, alle Spaltenwerte zwischen zwei Zeilen zu aktualisieren (auszutauschen):
%Vor%Es muss noch ein Synchronisationsmechanismus vorhanden sein.