Обновить заявление с помощью соединения - PullRequest
1 голос
/ 11 марта 2012

Я пытаюсь обновить поле в 2 таблицах с одним и тем же значением - бронирования (tbl) - dropOffLocation и cars (tbl) - currentbranch.

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

UPDATE bookings b SET b.dropOffLocation = 'London' WHERE b.regNumber = 'AX03PFF'
UPDATE cars c SET c.currentBranch = 'London' WHERE c.regNumber = 'AX03PFF'

Однако я хотел бы объединить 2 оператора обновления в один, используя JOIN. Я попробовал sql ниже, но он ничего не делает.

UPDATE 
  bookings b JOIN cars c
SET 
  b.dropOffLocation = 'London' 
  AND c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP' AND c.regNumber = 'EP59YMP'

Может кто-нибудь помочь мне изменить заявление о присоединении, чтобы оно заработало.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 марта 2012

Ваш синтаксис немного выключен. Используйте , вместо AND внутри предложения UPDATE SET. Вместо того, чтобы помещать обе таблицы в предложение WHERE, я добавил эквивалентное предложение ON к JOIN, которое немного более читабельно, поскольку в нем прямо указывается связь между таблицами.

UPDATE 
  bookings b JOIN cars c ON b.regNumber = c.regNumber
SET 
  b.dropOffLocation = 'London',
  c.currentBranch = 'London'
WHERE b.regNumber = 'EP59YMP'
0 голосов
/ 11 марта 2012

Попробуйте это:

UPDATE FROM bookings AS b
LEFT JOIN cars AS c ON c.regNumber = b.regNumber
SET b.dropOffLocation = 'London' AND c.currentBranch = 'London' 
WHERE b.regNumber = 'EP59YMP'
0 голосов
/ 11 марта 2012
UPDATE 
bookings b JOIN cars c
on b.regNumber = c.regNumber

SET 
b.dropOffLocation = 'London', 
AND c.currentBranch = 'London',

WHERE b.regNumber = 'EP59YMP' AND c.regNumber = 'EP59YMP';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...