代码之家  ›  专栏  ›  技术社区  ›  tipu

基于列的最高值更改列

  •  1
  • tipu  · 技术社区  · 15 年前

    num = num / MAX(num)

    val = select max(num) from table;

    update table set num = num / val

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jordan Running    15 年前

    UPDATE table
    JOIN (SELECT MAX(num) AS val FROM table)
    SET num = num / val;
    
        2
  •  0
  •   Unreason    15 年前

    请记住

    SET @val = (SELECT MAX(num) FROM table);
    UPDATE table SET num = num / @val;
    

    大多数接口都允许您将上述语句作为一条语句执行。

    UPDATE table
    SET num = num / (SELECT MAX(num) FROM table);
    

    不起作用,因为您不能在mysql中尝试更新的同一个表上有子查询。

    然而

    UPDATE table
    SET num = num / (SELECT val FROM (SELECT MAX(num) AS val FROM table) tmp);
    

    在子查询外创建临时表并绕过限制。