一張表:mytable
有如下數據:
現在要增加一列 序號,用於表示每行記錄按類型、個數降序排列時的序號。
先按照 ftype 和 fnum 排序:
select
*
from mytable
order by ftype asc,fnum asc
from mytable
order by ftype asc,fnum asc

再查出當前排序下的每行的序號:
SELECT a.
*,(
@rownum:
=
@rownum
+
1)
AS forder
FROM mytable a,( SELECT @rownum: = 0) b
ORDER BY ftype ASC,fnum ASC
FROM mytable a,( SELECT @rownum: = 0) b
ORDER BY ftype ASC,fnum ASC

然后修改表並將數據更新進去:
ALTER
TABLE mytable
ADD forder
INT
DEFAULT
0;
UPDATE mytable r,(
SELECT a.fid,( @rownum: = @rownum + 1) AS forder
FROM mytable a,( SELECT @rownum: = 0) b
ORDER BY ftype ASC,fnum ASC
) t
SET r.forder =t.forder
WHERE r.fid =t.fid
UPDATE mytable r,(
SELECT a.fid,( @rownum: = @rownum + 1) AS forder
FROM mytable a,( SELECT @rownum: = 0) b
ORDER BY ftype ASC,fnum ASC
) t
SET r.forder =t.forder
WHERE r.fid =t.fid

over.
