db2-запрос для выбора первой выбранной строки - PullRequest
10 голосов
/ 28 февраля 2012

У меня есть запрос типа

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?

Пожалуйста, совет.

Спасибо

Ответы [ 2 ]

20 голосов
/ 28 февраля 2012

В зависимости от вашей версии DB2 (я думаю, 8 и выше) вы можете использовать fetch в своем подзапросе

(выбрать * из таблицы, выбрать только первые 1 строки)

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

3 голосов
/ 28 февраля 2012

Добавьте FETCH FIRST ROW ONLY в свой подзапрос.Ищите fetch-first-clause на странице, на которую ссылается дополнительная информация.Это для DB2 в Linux / Unix / Windows.

Если вы работаете на мэйнфрейме (v9), вам нужна эта страница для получения дополнительной информации (или версия 10 *).1010 *).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...