重新排列行选择中的项目

时间:2013-05-29 15:50:14

标签: mysql sorting

我在选择中有许多行,其中包含类似

的排序索引
ID   text  date         sort_index
43   ABC   2013-05-28   3
93   DEF   2013-05-28   14
12   ABC   2013-05-28   103
[...]

现在我想将sort_index从0重新编号为2.组元素为date。 我怎么能用MySQL做到这一点?

2 个答案:

答案 0 :(得分:2)

试试这个,但尚未针对每个案例进行测试。

UPDATE tbltest SET sort_index =
(
    SELECT COUNT(*) FROM (
        SELECT * FROM tbltest
    ) AS dup
    WHERE  dup.`date` = tbltest.`date` AND
           dup.sort_index < tbltest.sort_index
)

答案 1 :(得分:1)

查看this网站。

在你的情况下它会是这样的:

mysql> SET @ordering_inc = 1;
mysql> SET @new_ordering = -1;
mysql> UPDATE YOUR_TABLE SET 
       sort_index = (@new_ordering := @new_ordering + @ordering_inc)
       WHERE date = '2013-05-28'
       ORDER BY sort_index ASC;

未经测试!