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

如何用MYSQL中同一行的列中的数据更新列?

  •  1
  • Jichao  · 技术社区  · 14 年前

    我有一个带字段price和area的表屋,现在我想再添加一个名为“average_price”的列。

    如何根据MYSQL中的价格和区域设置平均价格?

    3 回复  |  直到 14 年前
        1
  •  2
  •   fabrik    14 年前

    只有一个想法:

    • 在您喜爱的编辑器/方法中添加您的列
    • 使用值更新实际行

      UPDATE your_table SET average_price = price/area;

        2
  •  1
  •   Alin P.    14 年前

    你可以用suquery来完成。但我不知道表演。

    UPDATE `houses` AS h
    SET `avg_price` = (
        SELECT AVG(`price`)
        FROM `houses` AS h2
        WHERE h2.area == h.area
    )
    

        3
  •  1
  •   doppelgreener Perry Tew    14 年前

    这听起来不像是你应该实际存储的那种数据,你需要多久更新一次——每次你以任何方式修改house表都要更新一次!数据库上有很多不必要的负载,还有很大的人为错误空间。

    从所有区域检索:

    SELECT `area`, AVG(`price`) AS `average_price`
    FROM `house`
    GROUP BY `area`
    ORDER BY `average_price` ASC
    

    从特定区域检索:

    SELECT `area`, AVG(`price`) AS `average_price`
    FROM `house`
    WHERE `area` = "New York"
    GROUP BY `area`