このようなテーブルにしましょう:
CREATE TABLE `amoreAgentTST01` (
`moname` char(64) NOT NULL DEFAULT '',
`updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`data` longblob,
PRIMARY KEY (`moname`,`updatetime`)
個別の「moname」ごとに最も古いレコードを検索するクエリがありますが、この「moname」に複数のレコードがある場合のみです。
SELECT moname, updatetime FROM amoreAgentTST01 a
WHERE (SELECT count(*) FROM amoreAgentTST01 x WHERE x.moname = a.moname) > 1
AND a.updatetime = (SELECT min(updatetime) FROM amoreAgentTST01 y WHERE y.moname = a.moname) ;
私の質問は:同じことをする方法ですが、X個の最も古い値を選択しますか?これを実行し、最も古い値を削除して再実行するだけです...これはあまり良くありません。
2番目の質問は:上記のクエリについてどう思いますか?改善できますか?明らかな悪い習慣はありますか?
よろしくお願いします。
バース