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

如何使用MYSQL中同一行的列中的数据更新列?,sql,mysql,Sql,Mysql,我有一个带有price和area字段的table house,现在我想再添加一个名为“average_price”的列 如何根据MYSQL中的价格和面积设置平均价格?只有一个想法: 在您喜爱的编辑器/方法中添加列 在表格中循环并定义平均价格值 使用您的值更新实际行 更新您的_表设置平均_价格=价格/面积 只有一个想法: 在您喜爱的编辑器/方法中添加列 在表格中循环并定义平均价格值 使用您的值更新实际行 更新您的_表设置平均_价格=价格/面积 您可以通过suquery来完成。但我不知道性能如何

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

如何根据MYSQL中的价格和面积设置平均价格?

只有一个想法:

  • 在您喜爱的编辑器/方法中添加列
  • 在表格中循环并定义平均价格值
  • 使用您的值更新实际行

    更新您的_表设置平均_价格=价格/面积

    • 只有一个想法:

      • 在您喜爱的编辑器/方法中添加列
      • 在表格中循环并定义平均价格值
      • 使用您的值更新实际行

        更新您的_表设置平均_价格=价格/面积


      您可以通过suquery来完成。但我不知道性能如何

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

      或者,您可以创建一个临时表,在其中放置平均价格,然后进行更新。

      您可以使用suquery进行此操作。但我不知道性能如何

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

      或者,您可以创建一个临时表,在其中输入平均价格,然后进行更新。

      这听起来不像是您应该实际存储的数据类型,取决于您必须更新的频率—每次以任何方式修改房屋表时都要更新一次!这会给数据库带来很多不必要的负载,也会给人为错误留下很大的空间

      相反,我建议在需要时通过SQL查询动态获取它,而不要实际存储它

      从所有区域检索:

      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`
      

      这听起来不像是您应该实际存储的数据类型,而是您必须更新它的频率—每次您以任何方式修改house表时更新一次!这会给数据库带来很多不必要的负载,也会给人为错误留下很大的空间

      相反,我建议在需要时通过SQL查询动态获取它,而不要实际存储它

      从所有区域检索:

      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`
      

      @法布里克:单行sql查询可以做到这一点吗?这要视情况而定。平均价格是多少?如果你能在查询中定义它,我想这当然是可能的。@fabrik:average_price等于price/area。@fabrik:它工作得很好,太棒了。我想它会复杂得多。@fabrik:单行sql查询可以这样做吗?视情况而定。平均价格是多少?如果你能在查询中定义它,我想这当然是可能的。@fabrik:average_price等于price/area。@fabrik:average_price工作得很好,太棒了。我想它会复杂得多。我以前从未想过更新问题,请投票支持你的建议。谢谢。)根据经验,从其他数据派生的数据通常应该在查询中计算,而不是存储。我以前从未考虑过更新问题,请投票支持您的建议。谢谢。:)根据经验,从其他数据派生的数据通常应该在查询中计算,而不是存储