从两个表中添加多个(小数)值以更新第三个

时间:2013-10-16 16:26:21

标签: mysql

这应该是微不足道的,但我会绕圈子,也许有人可以提供帮助。

我有两个表(T1,T2),我希望从中提取每行中的多个值并更新第三个表(T3)的内容iff(当且仅当)T1中的两个UQ,NN字段,T2匹配,在这种情况下,我想在T1,T2的相应行中添加一些值,并将它们放在T3中,并将其他一些值复制到T3。

要求和的字段都声明为DECIMAL。

简化和伪代码(以避免做出太多假设):

SELECT T1.a,T1.b,T1.c from T1

SELECT T2.d, T2.e from T2

UPDATE T3.col1=a, T3.col2=b, T3.col3 = (value of(T2.c) + value of(T2.e)) iff T1.a = T2.d 

各种尝试均未奏效。

我在Ubuntu 12.10上运行MySQL Workbench 5.2.37


以下评论中的示例:

UPDATE Test_join as T3 
  SELECT GZHident, Magnitude_1 from GZHTableExtended3 as T1 
  SELECT AHZid, DM from AHZDMConversionTable as T2 JOIN T2,T1 
    ON T1.GZHident = T2.AHZid 
SET T3.AHZid = T1.GZHident 
SET T3.DM = T2.DM 
SET T3.Abs_Magnitude_1 = T1.Magnitude_1 + T2.DM;

1 个答案:

答案 0 :(得分:0)

MySQL支持使用JOIN语法的多表UPDATE,就像SELECT一样。这不是标准的ANSI SQL,但它对这些类型的情况非常有用。

示例:

UPDATE T1
JOIN T2 ON T1.a = T2.d
JOIN T3 ON ...???...
SET T3.col1=T1.a, 
    T3.col2=T1.b,
    T3.col3 = T2.c + T2.e;

您的问题中没有足够的信息让我猜测如何加入T3。


感谢您发布示例UPDATE查询。但目前尚不清楚如何更新T3。您提供的示例查询根本不是有效的SQL代码。我建议你阅读有关SQL编程的教程。

您似乎在UPDATE和INSERT之间感到困惑?请记住:

  • INSERT添加新行。
  • UPDATE更改现有行中的值。

我猜你的措辞,但也许你想添加新的行。你可以这样做:

INSERT INTO Test_join (AHZid, DM, Abs_Magnitude)
SELECT T1.GZHident, T2.DM, T1.Magnitude_1 + T2.DM
FROM GZHTableExtended3 as T1
JOIN AHZDMConversionTable as T2 JOIN T2 
  ON T1.GZHident = T2.AHZid;
相关问题