LINUX.ORG.RU

Как сделать такой запрос в MySQL?

 ,


0

1

Как сделать такой запрос в MySQL? Уже час туплю

Есть таблица table1, в ней есть поле runnerName, добавлено поле runner_id. Сейчас пустое.
Есть таблица runner_names - в ней поля id и name.

Надо в каждой строке таблицы table1 проставить runner_id на основании поля runnerName.

★★★★★

Навскидку как-то так -

update table1 a set a.runner_id=(select id from runner_names b where b.runnerName=a.runnerName)

это если имена уникальны

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Мускуль так не может. И я не помню может ли он множественные апдейты по условиям из выборки. Так что проще выбрать имена в приложение и запустить цикл с апдейтами.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Даже если не может — можно создать новую таблицу из SELECT runner_names JOIN table1 и потом заменить ей runner_names.

x3al ★★★★★
()
Ответ на: комментарий от deep-purple

Щас тестовые таблицы набросал все ок вот такой вариант работает -

update table1 as a set a.runner_id=(select b.id from runner_names as b where b.runnerName=a.runnerName)

pi11 ★★★★★
()
Ответ на: комментарий от pi11

Мне больше нравится подход с джойнами, тогда можно и несколько колонок без проблем обновлять

UPDATE 
    table1 AS a
INNER JOIN
    runner_names AS b 
    ON a.runnerName = b.runnerName 
SET 
    a.runner_id = b.id,
    a.column_x = b.column_y

kiotoze ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.