2012-02-27 9 views
9

Tôi có một truy vấn nhưdb2 truy vấn để chọn hàng đầu tiên lấy

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 
    )  

subquery trả về nhiều hơn 1 hàng và tôi muốn để chèn đầu tiên được chọn. Làm thế nào để tôi làm điều đó trong cơ sở dữ liệu DB2?

Vui lòng tư vấn.

Cảm ơn

Trả lời

3

Thêm FETCH FIRST ROW ONLY vào truy vấn phụ của bạn. Tìm kiếm fetch-first-clause trên trang được liên kết để biết thêm thông tin. Điều này là dành cho DB2 trên Linux/Unix/Windows.

Nếu bạn đang ở trên Mainframe (v9), thì bạn muốn this page để biết thêm thông tin (hoặc version 10).