結果が関数内で明示的に順序付けられるグループ関数を実行する必要があります。テーブル構造の例を次に示します(作成されたデータとともに)
id (int) | foo_id (int) | bar_id (int) | action (enum) | created (datetime)
1 | 17980 | 18 | added | 2012-12-03 07:34:23
2 | 14321 | 17 | added | 2013-01-06 07:34:23
3 | 9784 | 18 | added | 2013-02-15 07:34:23
4 | 17980 | 18 | removed | 2013-03-12 07:34:23
etc.
各 foo_id の最新のアクションを知りたいです。理想的には、次のようなものを実行します。
SELECT * FROM table WHERE bar_id = 18 GROUP BY foo_id ORDER BY created;
理想的な結果は次のようになります。
id | foo_id | bar_id | action | created
3 | 9784 | 18 | added | 2013-02-15 07:34:23
4 | 17980 | 18 | removed | 2013-03-12 07:34:23
foo_id = 17980 の場合、2 つのアクションが発生しました。最初のアクションで foo が追加され、2 番目のアクションで削除されました。私の理想的なグループ関数は、作成されたフィールドによって決定される最新のアクションを返すだけです。
私の知る限り、グループ関数は注文パラメーターを受け入れません。これを行う方法はありますか?助けてくれてありがとう。