У меня две таблицы. Таблица 1 содержит информацию о клиенте. Таблица 2 содержит информацию о бронировании. Таблица 1 имеет CustomerEmail в качестве первичного ключа, а таблица 2 также имеет CustomerEmail.

Я пытаюсь сделать оператор SQL для обновления значения поля в таблице 2 (скажем, P), где все поля таблицы 1 имеют определенное значение, а CustomerEmail из таблицы 1 равен таблице 2.

Я не использовал UPDATE раньше и новичок в использовании JOIN. На данный момент пробовал что-то вроде этого:

UPDATE Table 2 SET P='Yes'
LEFT JOIN Table 1 On Table2.CustomerEmail=Table1.CustomerEmail
WHERE Table1.value1='something1'
     AND Table1.value2='something2' up to 14 values etc...

Это связано с заказом или я ошибаюсь?

1
JReyn 17 Фев 2016 в 17:42

2 ответа

Лучший ответ

Вы можете использовать EXISTS () следующим образом:

UPDATE Table2
SET P='Yes'
WHERE EXISTS(select 1 from Table1 
             WHERE Table2.CustomerEmail=Table1.CustomerEmail
             AND Table1.value1='something1'
             AND Table1.value2='something2'
             AND....)

Это проверит, существует ли строка с тем же идентификатором и всеми значениями столбцов в table1, если да, то она обновит строку.

0
sagi 17 Фев 2016 в 14:53

Я использовал функцию exists, прокомментированную sagi, и она отлично работает, спасибо!

0
JReyn 17 Фев 2016 в 15:09