2012-04-24 4 views
0

나는 매우 비슷한 문제가 있습니다 그러나, 나는 MySQL은 5.0.77 사용하고 가장 최근의 기록을 얻을 필요가있어 Finding the 'earliest' composite primary key복합 기본 키

을 . 내 테이블 된 table_1은 다음과 같습니다

OID  PROP_TYPE  EFFECTIVE_DATE  PROP_VALUE 
----- ---------- ------------------- ---------- 
0NA010   2003-05-30 15:52:15 JAMES 
0NA010   2004-02-30 10:12:18 FRED 
0NA011   2003-05-30 08:25:41 WILLIAMS 
0NA011   2006-01-15 22:12:38 DANIELS 
0NA012   2003-05-30 08:25:41 (704) 242-2124 

이 OID, PROP_TYPE 및 EFFECTIVE_DATE의 복합 키는, 그래서 나는 다음과 같은 검색하는 SELECT 문을 찾고 있어요 :

OID  PROP_TYPE EFFECTIVE_DATE  PROP_VALUE 
-----  --------- ------------------- ------- 
0NA010  2004-02-30 10:12:18 FRED 
0NA011  2006-01-15 22:12:38 DANIELS 
0NA012  2003-05-30 08:25:41 (704) 242-2124 

감사합니다 어떤 도움이든.

답변

0

이 시도 :이 같은

select OID, PROP_TYPE, EFFECTIVE_DATE, PROP_VALUE 
    from TABLE_1 
where OID, PROP_TYPE, EFFECTIVE_DATE in 
    (select OID, PROP_TYPE, MAX(EFFECTIVE_DATE) from TABLE_1 group by OID, PROP_TYPE) 
1

아마 뭔가 :

SELECT 
    t.* 
FROM 
    TABLE_1 AS t 
    JOIN 
    (
     SELECT 
      MAX(t2.EFFECTIVE_DATE) AS EFFECTIVE_DATE, 
      t2.PROP_TYPE, 
      t2.OID 
     FROM 
      TABLE_1 AS t2 
     GROUP BY 
      t2.PROP_TYPE, 
      t2.OID 
    ) AS MaxDate 
    ON t.EFFECTIVE_DATE=MaxDate.EFFECTIVE_DATE 
    AND t.PROP_TYPE=MaxDate.PROP_TYPE 
    AND t.OID=MaxDate.OID 
0
SELECT 
    t.* 
FROM 
     TABLE_1 AS t 
    JOIN 
     (SELECT oid, prop_type, MAX(effective_date) AS effective_date 
      FROM TABLE_1 
      GROUP BY oid, prop_type 
     ) AS g 
     ON (g.oid, g.prop_type, g.effective_date) 
     = (t.oid, t.prop_type, t.effective_date) 

(oid, prop_type, effective_date, prop_value)에 인덱스 아마 성능을 위해 도움이 될합니다.