2010-10-31 10 views
1

Disons que j'ai une table qui est comme ce qui suit:magasin l'ordre de quelque chose dans MySQL

name VARCHAR(50) PRIMARY KEY NOT NULL 
ordernum TINYINT UNSIGNED NOT NULL 

nous aussi de dire que j'ai 3 lignes.

something  - 1 
somethingelse - 2 
somethingmore - 3 

Si je veux insérer une autre entrée appelée something1, et lui donner un NumCommande de 2, comment puis-je réarrange toutes les lignes qui a une NumCommande de 2 ou plus? c'est-à-dire somethingelse devient a un ordernum de 3, et somethingmore a un ordernum de 4?

J'ai entendu le vous pouvez le faire via FIELD(), mais je ne sais pas comment exactement.

Si ce n'est pas possible, anywy de le faire en PHP?

Répondre

4

Dans votre exemple:

UPDATE `table` SET `ordernum` = `ordernum` + 1 WHERE `ordernum` >= 2 
INSERT INTO `table` (`name`, `ordernum`) VALUES ('something1', 2) 
+0

Serait-ce un MultiQuery en PHP alors ou puis-je utiliser encore préparer? Aussi c'est une solution géniale. Je ne peux pas croire que j'ai raté ça. – Pwnna

+1

Glad cela aide! Vous pouvez simplement appeler mysql_query() deux fois de suite. Vous pouvez également le lancer dans une transaction. –

Questions connexes