Mysql按列名从另一个表更新

时间:2014-06-23 22:51:01

标签: mysql sql-update

我有两个看起来像这样的表

姓名:

name        gender   babies   year    age   prob
Mary        F         16707   1900    0 
Helen       F          6343   1900    1 
Anna        F          6114   1900    114   
Margaret    F          5306   1900    6 
Ruth        F          4765   1900    114   
Elizabeth   F          4096   1900    114   

LT

age 1900    1901    1902    1903
0   0.1460  0.1434  0.1408  0.1382
1   0.1740  0.1706  0.1672  0.1638
2   0.1875  0.1837  0.1799  0.1761
3   0.1960  0.1921  0.1882  0.1842
4   0.2031  0.1989  0.1948  0.1906
5   0.2081  0.2038  0.1995  0.1952
114 0.2117  0.2074  0.2030  0.1986

我正在尝试为'姓名'做一个更新声明。表中的问题'领域。因此,它将从名称表中查看年龄和年份,并将其与LT表格进行比较,查看列=年份和年龄=年龄的位置。

是否可以搜索值等于列名的位置?

我的基本想法是这样的:

update name t1, lt t2
set t1.prob = t2."?????"
where 
t1.age = t2.age

因此,对于上面的表格,它看起来像这样

name        gender   babies   year    age   prob
Mary        F         16707   1900    0 0.1460
Helen       F          6343   1900    1 0.1740
Anna        F          6114   1900    114   0.2117
Margaret    F          5306   1900    5 0.2081
Ruth        F          4765   1900    114   0.2117
Elizabeth   F          4096   1900    114   0.2117

1 个答案:

答案 0 :(得分:2)

你的问题不清楚。我会做一些假设。正如Omer Iqabl正确指出你的表格不同意。

要使表格一致,必须将第二个表格更改为:

age | year | weight
-------------------
0    1900    0.1460

等...

这将允许您查询表并加入它们。

UPDATE name AS a 
SET prob = (SELECT weight 
        FROM lt AS b 
        WHERE b.year = a.year AND b.age = a.age
       );

以上查询我希望有所帮助。 IT更新了概述列,其中lt和name的年份一致,以及lt和name中的年龄一致。

我希望有所帮助。