私はここで角を向いています...
背景:
TABLE myrecord (
id int # primary key
name varchar(32) # test name
d_when varchar(8) # date in yyyymmdd string format
)
コンテンツ:
id name d_when
100 Alan 20110201
101 Dave 20110304
102 Alan 20121123
103 Alan 20131001
104 Dave 20131002
105 Bob 20131004
106 Mike 20131101
簡単に言えば、誰が「再訪者」であり、彼が最後に (つまり、「最後から 2 番目に」) 訪問したのはいつかを把握したいのです。熱狂的すぎるようなもの:
SELECT SECOND_MAX(id), CORRESPONDING(d_when)
FROM myrecord
GROUP BY name
HAVING count(name)>1;
予想される結果:
101 Dave 20110304
102 Alan 20121123
これまでに次のことを試しました。
SELECT T1.id, t1.name, T1.d_when
FROM myrecord t1
WHERE id IN (SELECT MAX(id),
COUNT(id) cn
WHERE cn>1
ORDER BY d_when DESC)
しかし、ここでは明らかに何かが正しくありません。