MySQL UPDATE查询中的“中间”变量

时间:2017-07-01 16:40:36

标签: mysql variables

找不到适合我情况的东西;可能是以错误的方式接近......

如何为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;

它已经非常难看了。我不想在每次出现的地方贴上修正公式...... (真正的校正查询与用户函数有点嵌套,因此我希望缓存校正以保证清晰度)

1 个答案:

答案 0 :(得分:0)

找不到任何方法来访问SQL的'机制'。 通过添加额外的列来保存校正值,将其应用于存储的数据,然后删除列,解决了具体问题。