mysql - 复杂的sql更新

标签 mysql sql sql-update

MyTable 表包含 4 列。

  • id,电话列是唯一的。
  • id、phone、zipcode 永远不会为空。

id - phone -        salary   - zipcode

1  - 61730459987 - $56052.45 - 02456

2 - 21249620709 - NULL -      10023

3 - 21200830859 - $39089.28 - 10023

...

10000 - 64600830857 - $46063.72 - 03795**

我需要根据来自相同邮政编码的信息,通过用 salary_estimates 替换它们来删除 NULL。

对于上面的示例,第 2 行的 NULL 可以替换为 39089.28 美元(我们可以从表中发现另一个具有相同邮政编码 10023 的人收入 39089.28 美元,因此可以将第 2 行的 NULL 更新为 39089.28 美元). 因此,在我们运行此查询后,空单元格的数量可能会减少(尽管不会达到零)。

有人可以针对这个问题提出更新查询吗?

最佳答案

UPDATE
      MyTable AS tu
  JOIN 
      ( SELECT zipcode
             , AVG(salary) AS SalaryEstimate          --- AVG, MAX, MIN
                                                      --- your choice
        FROM MyTable 
        WHERE salary IS NOT NULL
        GROUP BY zipcode
      ) AS te
    ON te.zipcode = tu.zipcode
SET 
      tu.salary = te.SalaryEstimate
WHERE 
      tu.salary IS NULL

关于mysql - 复杂的sql更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7708946/

相关文章:

mysql - SQL:合并多行数据

mysql - 如何知道mysql中修改表的用户

mysql - SQL中如何求累加和扣除

jquery - EasyUI 数据网格中的动态列

php - 博客发布 SQL 连接问题

oracle - 当数据值相同时,Oracle 会更新列吗?

mysql - 使用输入中的常量值更新列字段累积和

php - PDO_MYSQL : general error 2014

c# - 如何在查询中执行查询并将其设置为主查询的条件

mysql - 如何用 WHERE 编写 SQL prepare 语句