Oracle: Попытка «обновить» оператор с использованием комбинации уникальных ключей Застрял в предложении, где - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь использовать оператор обновления, используя комбинацию уникальных ключей. Эти уникальные ключи используются в предложении where, которые перетаскиваются из запроса выбора с использованием подзапроса. Не уверен, как использовать эти два вместе.

Запрос выглядит примерно так

1    UPDATE table1
2    SET column1 = .. , column2 = ..
3    WHERE TOOL_NO, TOOL_SERIAL_NO IN
4    (SELECT TOOL_NO, TOOL_SERIAL_NO FROM TABLE2 WHERE condition)

TOOL_NO и TOOL_SERIAL_NO являются уникальными ключами и зависят друг от друга. Например, Tool_No будет иметь несколько Tool_Serial_No.

Проблема в строке номер 3. Не уверен, как использовать два поля в одном и том же предложении where, которое зависит от одного и того же подзапроса,

Any помощь приветствуется.

Ответы [ 3 ]

0 голосов
/ 22 января 2020

Вам также нужно будет сопоставить подзапрос с таблицей2 с внешним значением в таблице1 SQL.

0 голосов
/ 24 января 2020

При сопоставлении нескольких столбцов в предложении where всегда заключайте его в квадратные скобки. Так что в вашем случае WHERE TOOL_NO, TOOL_SERIAL_NO должно быть WHERE (TOOL_NO, TOOL_SERIAL_NO)

 UPDATE table1
    SET column1 = .. , column2 = ..
    WHERE (TOOL_NO, TOOL_SERIAL_NO) IN
    (SELECT TOOL_NO, TOOL_SERIAL_NO FROM TABLE2 WHERE condition)
0 голосов
/ 21 января 2020

Вы довольно близки - просто заключите эти столбцы в строке №3 в скобки:

UPDATE table1
   SET column1 = .. , column2 = ..
   WHERE (TOOL_NO, TOOL_SERIAL_NO) IN
     (SELECT TOOL_NO, TOOL_SERIAL_NO FROM TABLE2 WHERE condition)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...