1

我在选择中有许多行,其排序索引如下

ID   text  date         sort_index
43   ABC   2013-05-28   3
93   DEF   2013-05-28   14
12   ABC   2013-05-28   103
[...]

现在我想将sort_index0 重新编号为 2。组元素是date. 我怎样才能通过使用 MySQL 来做到这一点?

4

2 回答 2

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
)
于 2013-05-29T16:25:43.750 回答
1

看看这个网站。

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

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;

未测试!

于 2013-05-29T16:10:14.413 回答