次の表があります。
CREATE TABLE `relations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`relationcode` varchar(25) DEFAULT NULL,
`email_address` varchar(100) DEFAULT NULL,
`firstname` varchar(100) DEFAULT NULL,
`latname` varchar(100) DEFAULT NULL,
`last_contact_date` varchar(25) DEFAULT NULL,
PRIMARY KEY (`id`)
)
このテーブルには重複があります。これらは、relationcode と email_address がまったく同じ関係です。彼らはそこに2回、または10回もいる可能性があります。すべてのレコードの ID を選択するクエリが必要ですが、そこに複数回あるものは除外します。それらのレコードのうち、最新の last_contact_id のみを持つレコードのみを選択したいと思います。
私はMysqlよりもOracleに興味があります。Oracleでは、次のようにすることができます。
select * from (
select row_number () over (partition by relationcode order by to_date(last_contact_date,'dd-mm-yyyy')) rank,
id,
relationcode,
email_address ,
last_contact_date
from RELATIONS)
where rank = 1
しかし、このクエリを MySql で動作するように変更する方法がわかりません。MySQl の単一のクエリで同じことを実行できるかどうかはわかりません。何か案は?