Я пытаюсь обновить таблицу сериалов, указав дату создания соответствующего заказа. В итоге заказы могут иметь повторяющиеся номера, поэтому это соединение необходимо. Ключом на столе является серийный номер.
Я обновляю новое поле MYCRTDAT
, используя следующий SQL. Кажется, он работает правильно, но только с оператором FETCH FIRST 1 ROW ONLY
.
Я проверил, что строки обновлены с правильной датой, быстро просматривая их.
Когда НЕ с использованием этого оператора, он возвращает с ошибкой, что подвыбор базового предиката дал более одной строки
Я думаю, что эта ошибка имеет смысл, но я не понимаю, как VC2.SERIALNUM 'передается' --- это единственное число или все строки одновременно? И если это все строки одновременно, то как FETCH FIRST
не просто каждый раз возвращает первую строку?
UPDATE SCHEMA.TABLE VC2
SET MYCRTDAT = (
-- Get Date from Associated Table
SELECT
MO1.CRDT
FROM
SCHEMA.TABLE VC1
LEFT JOIN SCHEMA.M1 MO1 ON
VC1.ORDER = MO1.ORDER
AND VC1.ITEM = MO1.ITEM
WHERE VC2.SERIALNUM = VC1.SERIALNUM
FETCH FIRST 1 ROW ONLY
);
IBM DB2 для i - 7.1 (POWER SERIES)