MySQL:用其他行值计算和更新一行?

Posted

技术标签:

【中文标题】MySQL:用其他行值计算和更新一行?【英文标题】:MySQL: calculate and update a row with other rows value? 【发布时间】:2017-06-14 02:29:42 【问题描述】:

表1

ID    X      Y
1     0.5    0.5    
2     ?      ?
3     5      5

大家好,

基本上我有一张和上面一样的桌子。我试图用除以其他列的值的结果来更新 ID = 2 的 X 和 Y 的值。

我尝试运行此查询但没有成功,

"UPDATE Table1 SET X = X IN (WHERE ID = 1) / Y IN (WHERE ID = 3) WHERE ID = 2"

我想要的结果是

ID       X          Y
1        0.5        0.6    
2        (0.5/6)    (0.6/5)
3        5          6

【问题讨论】:

【参考方案1】:

在许多数据库中,您可以使用JOIN。在 mysql 语法中,这看起来像:

UPDATE Table1 t1 JOIN
       Table1 t1_1
       ON t1_1.ID = 1 JOIN
       Table1 t1_3
       ON t1_3.ID = 3
    SET t1.X = t1_1.X / t1_3.X,
        t1.Y = t1_3.X / t1_3.Y
    WHERE t1.ID = 2;

使用子查询也可以实现类似的逻辑,但是代码有点混乱。

【讨论】:

以上是关于MySQL:用其他行值计算和更新一行?的主要内容,如果未能解决你的问题,请参考以下文章

根据同一行中的行值逐行更新列值

Mysql根据不同的行更新表中的行值

如果 Oracle 中存在行值,则使用随机值更新行

如何根据具有相同 id 的另一行更新一行

Rails 3.x 如何根据行值编写全部更新?

将行值转换为列,并计算所有可能值 mysql 的重复次数