Обновите столбец, используя значение из той же строки в Oracle - PullRequest
4 голосов
/ 28 января 2012

Я создаю команду SQL в Oracle, чтобы обновить значение «LOADDATE», чтобы оно равнялось значению «UPDATEDATE» в моей таблице.Вот что у меня здесь работает:

BEGIN
  UPDATE LOAD_SETTINGS 
    SET 
      LOADDATE = (
        SELECT UPDATEDATE 
        FROM LOAD_SETTINGS
        WHERE
          MODEL = 'A001'
          AND OBJECT = 'A'
      )
    WHERE
      MODEL = 'A001'
      AND OBJECT = 'A';
  COMMIT;
END;

Единственное, что я точно знаю об Oracle, это то, что я многого не знаю.Есть ли лучший способ сделать это, используя какие-либо функции Oracle, с которыми я, возможно, не знаком?Возможно, без необходимости использовать подзапрос?Или это путь?

Спасибо!

Ответы [ 2 ]

11 голосов
/ 28 января 2012

Поскольку предложение where в подзапросе такое же, как и во внешнем, нет необходимости в подвыборе, просто ссылаются на столбец напрямую

UPDATE LOAD_SETTINGS 
SET 
  LOADDATE = UPDATEDATE 

WHERE
  MODEL = 'A001'
  AND OBJECT = 'A';
0 голосов
/ 30 января 2012
UPDATE LOAD_SETTINGS 
SET    LOADDATE = UPDATEDATE 
WHERE  MODEL LIKE 'A001'
AND    OBJECT LIKE 'A';

Поскольку Model и Object являются varchar, лучше использовать LIKE вместо =.

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