2010-10-31 57 views
1
顺序

比方说,我有一个表,是这样的:商店的东西在MySQL

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

也让我们说我有3行。

something  - 1 
somethingelse - 2 
somethingmore - 3 

如果我想插入名为something1另一个条目,并给它的2的ORDERNUM,我如何重新安排所有具有2或更大的ORDERNUM行?即somethingelse成为3的订单号,并且somethingmore的订单数是4?

我听说你可以通过FIELD()来做到这一点,但我不确定如何去做。

如果这是不可能的,anywy在PHP中做?

回答

4

在您的例子:

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

那是要在PHP multiquery再或者我仍然可以使用准备?这也是一个绝妙的解决方案。不能相信我错过了。 – Pwnna 2010-10-31 23:46:42

+1

很高兴这有助于!你可以连续调用mysql_query()两次。你也可以把它放在交易中。 – 2010-10-31 23:54:03