ID-Nummern von zwei Zeilen in MySql wechseln

8

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%     
byronyasgur 08.07.2011, 20:27
quelle

5 Antworten

11

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.

    
Brian 08.07.2011, 20:29
quelle
11
%Vor%

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.

    
Marc B 08.07.2011 20:30
quelle
1

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.

    
horatio 08.07.2011 20:41
quelle
0
___ answer6630153 ___
%Vor%

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.

    
___ antwort6630144 ___

Sie müssen SORT BY etwas tun. Wir müssen Ihr Tabellenschema sehen.

    
___ qstnhdr ___ ID-Nummern von zwei Zeilen in MySql wechseln ___ answer16877852 ___

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.

    
___ answer6630146 ___

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.

    
___ tag123mysql ___ MySQL ist ein freies, relationales Datenbank-Managementsystem (RDBMS), das die strukturierte Abfragesprache (SQL) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle SQL verwenden, um die Daten zu verwalten. ___ tag123php ___ PHP ist eine weit verbreitete, dynamische, objektorientierte und interpretierte Skriptsprache, die primär für die serverseitige Webentwicklung entwickelt wurde. ___ tag123database ___ Eine Datenbank ist eine organisierte Sammlung von Daten. Es ist die Sammlung von Schemas, Tabellen, Abfragen, Berichten, Ansichten und anderen Objekten. Die Daten sind typischerweise so organisiert, dass sie Aspekte der Realität so modellieren, dass sie Prozesse unterstützen, die Informationen benötigen. Verwenden Sie dieses Tag, wenn Sie Fragen zum Entwerfen einer Datenbank haben. Wenn es sich um ein bestimmtes Datenbankverwaltungssystem (z. B. MySQL) handelt, verwenden Sie stattdessen dieses Tag. ___ tag123sql ___ Structured Query Language (SQL) ist eine Sprache für die Abfrage von Datenbanken. Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) enthalten. Wenn sich Ihre Frage nur auf ein bestimmtes DBMS bezieht (verwendet bestimmte Erweiterungen / Funktionen), verwenden Sie stattdessen das Tag des DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten den ISO / IEC-Standard SQL verwenden. ___ qstntxt ___

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%     
___ answer6630281 ___

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.

    
___
AlienWebguy 08.07.2011 20:29
quelle
0

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.

    
Jecksom 01.06.2013 22:20
quelle

Tags und Links