我有一个像
这样的查询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
)
子查询返回超过1行,我想插入第一个选中的行。我如何在DB2数据库中执行此操作?
请建议。
由于
答案 0 :(得分:20)
根据您的DB2版本(我认为8以上),您可以在子查询中使用fetch
(select * from table fetch first 1 rows)
答案 1 :(得分:3)
将FETCH FIRST ROW ONLY
添加到子查询中。在链接的页面上搜索fetch-first-clause
以获取更多信息。这适用于Linux / Unix / Windows上的DB2。
如果您使用大型机(第9版),则需要this page了解更多信息(或version 10)。