【问题标题】:mysql sort field increment valuemysql排序字段增量值
【发布时间】:2012-07-06 18:53:46
【问题描述】:

假设我有一张桌子

name             rank
-----------------------
John             1
Tit              3
Bernard          4

缺少 2 级,可能已被删除或其他原因。我需要一个查询来增加排名字段。所以约翰是第一名,但蒂特现在是第二名,伯纳德是第三名。

可能有多达 100 个等级,还有几个缺失。只要将最小的排名重置为数字 1,并且所有跟随递增,它应该是好的。

有什么想法吗?

更新排名字段的查询。

【问题讨论】:

    标签: mysql increment


    【解决方案1】:

    无需使用外部变量即可:

    UPDATE tbl a
    INNER JOIN
    (
        SELECT a.name, a.rank, COUNT(*) AS newrank
        FROM tbl a
        INNER JOIN tbl b ON a.rank >= b.rank
        GROUP BY a.rank
    ) b ON a.name = b.name AND a.rank = b.rank
    SET a.rank = b.newrank 
    

    【讨论】:

      【解决方案2】:

      这将更新排名字段,使其在没有漏洞的情况下递增:

      SET @i := 0;
      UPDATE tbl SET rank = @i:=@i+1 ORDER BY rank;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-21
        • 1970-01-01
        • 2013-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多