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

时间:2017-01-28 13:32:10

标签: mysql sql database phpmyadmin mariadb

表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 个答案:

答案 0 :(得分: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;

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