mysql数据库内有一个字段priority(int),这个字段内每条数字都不相同,但是非连续.
现在我想通过一条sql语句使这个表按priority从1开始递增1改变每一条的priority值.例如:表 user
name priotiry
aaa 3
bbb 5
ccc 6
ddd 10
eee 22变为:表 user
name priotiry
aaa 1
bbb 2
ccc 3
ddd 4
eee 5请问sql语句应该怎样写,不要嵌套,mysql4不支持.
现在我想通过一条sql语句使这个表按priority从1开始递增1改变每一条的priority值.例如:表 user
name priotiry
aaa 3
bbb 5
ccc 6
ddd 10
eee 22变为:表 user
name priotiry
aaa 1
bbb 2
ccc 3
ddd 4
eee 5请问sql语句应该怎样写,不要嵌套,mysql4不支持.
name priotiry
aaa 3
bbb 5
ccc 6
ddd 10
eee 22
fff 78变为:表 user
name priotiry
aaa 1
bbb 2
ccc 3
ddd 4
eee 5
fff 6
是不是要这样的效果呀?楼主的意思有些费解
mysql>update user set priotiry=(@i:=@i+1);
恐怕不行,如果原始数据是杂乱的,并未按照priority的升序排列,就会乱了。另外,我看不出这么做有任何的意义。
多謝!
但是放到PHP裏應該怎麽寫?
另外假如表的次序不是順序的,應該怎樣寫? 多謝!!!表 user
name priotiry
bbb 5
aaa 3
ccc 6
ddd 10
eee 22 变为: 表 user
name priotiry
bbb 2
aaa 1
ccc 3
ddd 4
eee 5
再后面再加个order by 控制顺序
<?
include_once("inc/db.php");
$rs = mysql_query("set @i=0");
$rs = mysql_query("update test set priority=(@i:=@i+1)" order by priority asc);
?>上面無效,資料沒有改變。<?
include_once("inc/db.php");
$rs = mysql_query("set @i=0");
$rs = mysql_query("update test set priority=(@i:=@i+1)");
?>上面有效,但無法排序。
============================================================
确定不是因为你手误的原因?
$rs = mysql_query("update test set priority=(@i:=@i+1) order by priority asc");
哈哈,手誤,手誤,多謝foolbirdflyfirst 和 jakey9826 ,揭帖。