#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.
Я надеюсь, что это поможет.