db2 query用于选择获取的第一行

bee*_*tri 10 db2 select

我有一个查询

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
   )     
Run Code Online (Sandbox Code Playgroud)

子查询返回超过1行,我想插入第一个选中.我如何在DB2数据库中执行此操作?

请指教.

谢谢

Tad*_*aia 20

根据您的DB2版本(我认为8以上),您可以在子查询中使用fetch

(select*from table fetch first 1 rows only)

http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2.doc.admin%2Ffrstnrw.htm


bha*_*mby 5

添加FETCH FIRST ROW ONLY到您的子查询。fetch-first-clause在链接的页面上搜索以获取更多信息。这适用于 Linux/Unix/Windows 上的 DB2。

如果您使用的是大型机 (v9),那么您需要此页面以获取更多信息(或版本 10)。