Обновление Mysql из другой таблицы по имени столбца

#mysql #sql-update

#mysql #sql-обновление

Вопрос:

У меня есть две таблицы, которые выглядят следующим образом

Имя:

 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
 

Я пытаюсь выполнить инструкцию update для таблицы ‘Name’ в поле ‘prob’. Таким образом, он будет смотреть на возраст и год из таблицы имен и сравнивать их с таблицей LT, просматривая a, где столбец = год и возраст = возраст.

Возможно ли это для поиска там, где значение равно имени столбца?

Основная идея, которая у меня есть, выглядит примерно так:

 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. Ваш вопрос неясен. Ни в обеих таблицах нет возраста, ни в названии таблиц нет ясности. Что такое t1 и t2? Что такое lt?

2. @OmerIqbal смотрите добавленную таблицу. Также t1 и t2 — это то, как я назвал таблицы для этого оператора. Таким образом, вместо ввода name.prob вы можете сделать t1.prob

3. У Titlyard есть решение, если это так, см. Ниже.

Ответ №1:

Ваш вопрос не совсем ясен. Я сделаю несколько предположений. Как справедливо заметил Омер Икабл, ваши таблицы не совпадают.

Чтобы привести таблицы в соответствие, вторая таблица должна быть изменена на :

 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
       );
 

Я надеюсь, что приведенный выше запрос поможет. ОН обновляет столбец prob, в котором совпадают годы в lt и name, и где совпадают возрасты в lt и name.

Я надеюсь, что это поможет.