Обновить строку данными из другой таблицы - PullRequest
1 голос
/ 21 мая 2019

У меня есть база данных mysql со следующими таблицами.

таблица водителя

  id    name    vehicleId
 -------------------------
   1     bob            1
   2     jim            1
   3     rob            2
   4     tim            2
   5     sue            3

таблица транспортного средства

  id      model
 ---------------
   1      civic
   2       cr-v
   3      camry
   4    corolla

Я хочу иметь возможность обновлять данныеавтомобиль водителя, использующий модель транспортного средства.

Я смог заставить это работать, используя,

UPDATE driver, vehicle
SET vehicleId = vehicle.id
WHERE driver.name = "bob"
AND vehicle.model = "corolla";

Но это не кажется лучшим / правильным решением.Из того, что я прочитал, кажется, что я должен быть в состоянии сделать это с помощью объединения, но мне не повезло с использованием этого метода.

Является ли решение на основе объединения лучше или мое решение в порядке?

Заранее спасибо!

1 Ответ

1 голос
/ 21 мая 2019

Ваша формулировка в порядке, хотя я предпочитаю от CROSS JOIN до ,.

Вы также можете выразить это с помощью подзапроса:

UPDATE driver 
    SET vehicleId = (SELECT v.id FROM vehicle v WHERE v.model = 'corolla')
    WHERE name = 'bob';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...