Left Join 안에 서브쿼리

less than 1 minute read

      SELECT
        /* Contact_Mapper.getAll */
        A.CNTCT_SEQ ,
        A.HP ,
        A.EMAIL ,
        A.CORP_NM ,
        A.CONT ,
        A.APP_USER_ID ,
        A.CONTACT_TIME ,
        A.ACCESS_FROM ,
        DATE_FORMAT(A.REG_DATE, '%Y-%m-%d %H:%i:%s') AS REG_DATE ,
        B.CUST_SEQ ,
        DATE_FORMAT(A.FIRST_CONTACT_DATE, '%Y-%m-%d %H:%i:%s') AS FIRST_CONTACT_DATE ,
        DATE_FORMAT(A.RESERV_DATE, '%Y-%m-%dT%H:%i:00') AS RESERV_DATE ,
        A.CONTACT_RESULT ,
        A.SERVICE_FEE ,
        A.BIZ_NM ,
        A.EXPOSE_YN ,
        A.ADMIN_ID ,
        D.ADMIN_NM ,
        E.REG_USER_ID AS latest_admin_id,
        E.ADMIN_NM AS latest_admin_nm,
        DATE_FORMAT(C.REG_DATE, '%Y-%m-%d %H:%i:%s') AS agree_date
      FROM
        CONTACT A
      LEFT JOIN CUSTOMER B ON
        A.CNTCT_SEQ = B.CNTCT_SEQ
      LEFT JOIN AGREE_FILES C ON
        B.AGREE_SEQ = C.AGREE_SEQ
      LEFT JOIN ADMIN_MEMBER D ON
        A.ADMIN_ID = D.ADMIN_ID
      LEFT JOIN (
        SELECT
          N0.CNTCT_SEQ 
          , N0.NOTE_SEQ 
          , N0.REG_USER_ID 
          , ADM.ADMIN_NM
        FROM
          CONTACT_NOTE N0
        RIGHT JOIN (
          SELECT
            CN.CNTCT_SEQ 
            , MAX(CN.NOTE_SEQ) AS noteSeq
          FROM
            CONTACT_NOTE CN
          GROUP BY
            CN.CNTCT_SEQ ) N1 ON
          N0.NOTE_SEQ = N1.noteSeq
        LEFT JOIN ADMIN_MEMBER ADM ON
          N0.REG_USER_ID = ADM.ADMIN_ID ) E ON
        A.CNTCT_SEQ = E.CNTCT_SEQ
      WHERE
        1 = 1
      ORDER BY
        A.RESERV_DATE DESC,
        A.CNTCT_SEQ DESC
      LIMIT 0,
      20

Updated: