0

ビル・カーウィンから質問121387へのこの回答は、私にとって完璧に機能しました。

「多くの人がサブクエリやベンダー固有の機能を使用してこれを行っていますが、次のようにサブクエリなしでこの種のクエリを実行することがよくあります。プレーンな標準SQLを使用するため、どのブランドのRDBMSでも機能するはずです。

SELECT t1.*
FROM mytable AS t1
  LEFT OUTER JOIN mytable AS t2
    ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date")
WHERE t2.UserId IS NULL;

言い換えると、同じUserIdとより大きなDateを持つ他の行が存在しないt1から行をフェッチします。」

ただし、結果に3番目のテーブルの列も含める必要があります(UserId列とUserPhoneNumber列を持つ別のテーブルを想像してください)。それは簡単なはずのように感じますが、それは私を狂わせています。どんな助けでもいただければ幸いです。

4

1 に答える 1

0

LEFTJOINの後の3番目のテーブルに参加するだけです。

SELECT t1.*, t3.*
FROM mytable AS t1
  LEFT OUTER JOIN mytable AS t2
    ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date")
JOIN myothertable AS t3 ON t1.UserId = t3.UserId
WHERE t2.UserId IS NULL;
于 2012-08-15T22:37:48.057 に答える