2012-04-24 2 views
0

とMySQLの一時的なDB内の最新のレコードを検索:しかし、私は、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 

感謝助けを求めてたぶん、このような何か

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) 

答えて

0

はこれを試してみてください。

1

(oid, prop_type, effective_date, prop_value)

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) 

インデックスは、おそらくパフォーマンスのために役立つだろう

関連する問題