値を検索するための共通フィールドとしてシリアル番号フィールドを使用して、別のテーブルの値に基づいてテーブルを更新しています。しかし、2つのクエリから私は2つの異なる結果を得る。なぜ2つの出力が異なるのかを説明できるのでしょうか?更新文は47200レコードを更新するべきではありませんか?Oracle Update Statementの明確化が必要
UPDATE TBL_SERIAL_NUMBER_MASTER A
SET (A.name) = (SELECT B.name
FROM TBL_DEVICE_LOCALITY B
WHERE A.SERIAL_NUMBER = B.SERIAL_NUMBER AND ROWNUM <=1)
WHERE EXISTS (SELECT 1
FROM TBL_DEVICE_LOCALITY
WHERE SERIAL_NUMBER = A.SERIAL_NUMBER
AND TBL_ODIN_DEVICE_LOCALITY.HOST_NAME IS NOT NULL);
結果int:35,311 rows updated。
select count(*)
from TBL_SERIAL_NUMBER_MASTER A, TBL_DEVICE_LOCALITY B
WHERE A.SERIAL_NUMBER = B.SERIAL_NUMBER AND B.HOST_NAME IS NOT NULL;
戻り値:カウント= 47200
最初のクエリは、サブクエリのテーブル 'TBL_ODIN_DEVICE_LOCALITY'を参照します。私はこれがタイプミスだと思う。 –
はいそれはタイプミスです –