MySQL テーブルがあるとします。
╔══════╦═════╦═════════╦═════════╗ ║ 時間 ║ 半ば ║ field_1 ║ field_2 ║ ╠══════╬═════╬═════════╬═════════╣ ║ 100 ║ 1 ║ 32 ║ 54 ║ ║ 100 ║ 2 ║ 0 ║ 34 ║ ║ 100 ║ 3 ║ 44 ║ 99 ║ ║ 200 ║ 1 ║ 0 ║ 45 ║ ║ 200 ║ 2 ║ 0 ║ 45 ║ ║ 200 ║ 3 ║ 4 ║ 59 ║ ║ 200 ║ 4 ║ 45 ║ 45 ║ ╚══════╩═════╩═════════╩═════════╝
time は UNIX タイムスタンプです。mid はメンバー ID です。field_1 はメンバーによって提供されます。field_2 は自動的に入力されます。
すべてのメンバーに対して、最新のゼロ以外の field_1 を持つ行を選択したいと考えています。したがって、クエリの結果は次のようになります。
╔══════╦═════╦═════════╦═════════╗ ║ 時間 ║ 半ば ║ field_1 ║ field_2 ║ ╠══════╬═════╬═════════╬═════════╣ ║ 100 ║ 1 ║ 32 ║ 54 ║ ║ 200 ║ 3 ║ 4 ║ 59 ║ ║ 200 ║ 4 ║ 45 ║ 45 ║ ╚══════╩═════╩═════════╩═════════╝
私が思いついた唯一の解決策は、あまりエレガントではないようです。
選択する * から ( 選択する * から t1 WHERE フィールド 1 > 0 ORDER BY time DESC ) として GROUP BY ミッド
より良い方法はありますか?