代码之家  ›  专栏  ›  技术社区  ›  EmmyS

使用groupconcat和其他选择标准-mySQL

  •  1
  • EmmyS  · 技术社区  · 14 年前

    我有两张桌子,arrcu purchaactivity和arrcu代金券。purchase activity表包含每次购买的多个记录,由信用卡授权绑定在一起。我需要为每次购买返回一行,并从凭证表中拉入一个字段。 如果我只是从purchase activity表中获取几个字段,如下所示:

    SELECT group_concat( VoucherID ) , CcAuthCode FROM arrc_PurchaseActivity GROUP BY CcAuthCode
    

    它工作正常,返回如下内容:

    group_concat( VoucherID )  | CcAuthCode
    =========================================
    610643,611139,610642       | 8LUPDN
    

    我需要做的是拉入另一个连续字段(VoucherNbr),这次是从arrc\u凭证表,其中凭证表的VoucherID等于采购表的VoucherID。在本例中,因为VoucherID是一个连接,所以我需要为连接列中的每个VoucherID返回VoucherNbr的连接列。像泥一样干净,对吧?我需要的是这样的:

    group_concat( VoucherID )  | group_concat( VoucherNbr)  |  CcAuthCode
    ===========================|============================|=============
    610643,611139,610642       | 123,456,789                |  8LUPDN 
    

    换句话说,VoucherID 610643的VoucherNbr是123,611139的VoucherNbr是456,以此类推。

    1 回复  |  直到 14 年前
        1
  •  2
  •   OMG Ponies    14 年前

    用途:

       SELECT pa.ccauthcode,
              GROUP_CONCAT(DISTINCT pa.voucherid) AS voucherids,
              GROUP_CONCAT(v.vouchernbr) AS vouchernbrs
         FROM ARRC_PURCHASEACTIVITY pa 
    LEFT JOIN ARRC_VOUCHER v ON v.voucherid = pa.voucherid
     GROUP BY pa.ccauthcode
    

    DISTINCT

    ARRC_PURCHASEACTIVITY 中没有支持记录的记录 ARRC_VOUCHER