找不到适合我情况的东西;可能是以错误的方式接近......
如何为UPDATE查询的每一行创建“中间”变量? (在示例中,@ correction var)
这主要是为了清楚查询,如果没有别的。
UPDATE `table_with_errors`
JOIN `corrections_table`
ON `table_with_errors`.`corrections_table_id` = `corrections_table`.`id`
SET
@correction = IF(`table_with_errors`.`correction_type` = 1, `corrections_table`.`corr1`,
IF(`table_with_errors`.`correction_type` = 2, `corrections_table`.`corr2`, `corrections_table`.`corr3`)),
`table_with_errors`.`valueA` = `table_with_errors`.`valueA` + @correction,
`table_with_errors`.`valueB` = `table_with_errors`.`valueB` + @correction,
`table_with_errors`.`valueC` = `table_with_errors`.`valueC` + @correction;
它已经非常难看了。我不想在每次出现的地方贴上修正公式...... (真正的校正查询与用户函数有点嵌套,因此我希望缓存校正以保证清晰度)
答案 0 :(得分:0)
找不到任何方法来访问SQL的'机制'。 通过添加额外的列来保存校正值,将其应用于存储的数据,然后删除列,解决了具体问题。