2012-03-05 3 views
1

를 추가 1.MySQL의 쿼리가 나는 두 MySQL의 테이블을 가지고 표 2에서 가장 높은 값의 결과를 선택하고 테이블에 다음을 추가하고자하는 가장 최근의 결과

표 1은 ID를 포함, MSISDN (14 자리 숫자)

표 2 table2.date가 최대 값 ID, MSISDN, FIELD2 날짜

I는 표 1의 모든 MSISDNs의 목록을 반환하고 싶은 table2.field2 및 table2.date에도 결과를 포함 일치하는 MSISDN.

어떻게하면됩니까? MAX를 사용해야하지만 table2.field에 올바른 결과를 추가하기 위해 서브 쿼리를 생성하는 방법을 모르겠습니다.

답변

1

일반적으로

참고 추가 열을 반환하는 원래의 테이블이 부속을 결합 각 ID

  • 의 최대 날짜를 포함하는 부속을 만들기

    • 하여이 작업을 수행 할 것 그 두 개의 동일한 (MSISDN, 날짜) 레코드가 있으면 그들은 모두 반환됩니다. 이것에 대한

      SQL 서버

      SELECT t1.MSISDN 
           , t2.field2 
           , t2.date 
      FROM Table1 AS t1 
           INNER JOIN Table2 AS t2 ON t2.MSISDN = t1.MSISDN 
           INNER JOIN (
            SELECT MAX(date) AS date, MSISDN 
            FROM Table2 
            GROUP BY 
              MSISDN 
           ) t2max ON t2max.MSISDN = t2.MSISDN 
              AND t2max.date = t2.date 
      
  • +0

    감사합니다. MAX (날짜)를 DATE 또는 MAX (MSISDN)를 MSISDN으로 사용 하시겠습니까? 각 MSISDN에 대해 가장 최근 날짜가 필요하지만 그 날짜와 MSISDN에 대해 일치하는 필드 2가 필요합니다. –

    +0

    @MatthewPort - 'MAX (date)'여야합니다. 나는 내 실수를 고쳤다. –

    +0

    정말 고마워. 내 쿼리를 실행하는 데 몇 시간이 걸리므로 (table2는 97m 행) 결과가 예상대로 표시 될 때까지 기다리는 데 오랜 시간이 걸립니다. –

    관련 문제