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/