私のようなクエリがあります
UPDATE PRD_PRODUCT_L10N ppl
SET ( CATCHING_PHRASE
, GENERIC_NAME
, INGREDIENTS
, QUANTITY
, DOSE
, NUTRITION_FACTS
, PRODUCT_DESCRIPTION
, PROMOTION_MESSAGE
, MESSAGE
) = (
SELECT distinct CATCHING_PHRASE
, GENERIC_NAME
, INGREDIENTS
, QUANTITY
, DOSE
, NUTRITION_FACTS
, PRODUCT_DESCRIPTION
, PROMOTION_MESSAGE
, MESSAGE
FROM TEMP_UPLOAD_PRODUCT_ATTRIBUTES tupa
INNER JOIN
PRD_PRODUCT pp
ON pp .EISIDENTIFIER = tupa.EISIDENTIFIER
WHERE ppl.PRODUCTGUID = pp.GUID
AND ppl.LOCALEGUID = tupa.LOCALEGUID
)
WHERE EXISTS (
SELECT 0
FROM TEMP_UPLOAD_PRODUCT_ATTRIBUTES tupa
INNER JOIN
PRD_PRODUCT pp
ON pp .EISIDENTIFIER = tupa.EISIDENTIFIER
WHERE ppl.PRODUCTGUID = pp .GUID
AND ppl.LOCALEGUID = tupa.LOCALEGUID
)
サブクエリが複数の行を返すため、最初に選択された行を挿入したいと思います。 DB2データベースでそれを行うにはどうすればよいですか?
アドバイスをお願いします。
ありがとう
DB2バージョンに応じて(8以上と思います)、サブクエリでフェッチを使用できます
(テーブルフェッチから選択*最初の1行のみをフェッチ)
追加 - FETCH FIRST ROW ONLY
をサブクエリに追加します。検索する fetch-first-clause
リンク先のページで詳細をご覧ください。これは、Linux/Unix/Windows上のDB2用です。