2010-10-31 66 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