指定した ID の最新の行を取得する
同じ ID を持つ複数の行を含むテーブルで、行のみを効率的に抽出するにはどうすればよいですか?タイムスタンプに基づいた最新の行?テーブルの例を考えてみましょう。
| id | signin | signout | +----+---------------------+---------+ | 1 | 2011-12-12 09:27:24 | NULL | | 1 | 2011-12-13 09:27:31 | NULL | | 1 | 2011-12-14 09:27:34 | NULL | | 2 | 2011-12-14 09:28:21 | NULL | +----+---------------------+---------+
これを実現するには、集約関数とサブクエリを利用できます。
Aggregate MAX() の使用
集約 MAX() 関数を使用して、各 ID の最新のサインイン タイムスタンプを決定できます。結果を ID 列でグループ化すると、一意の ID ごとに最大のサインイン タイムスタンプを識別できます。
SELECT id, MAX(signin) AS most_recent_signin FROM tbl GROUP BY id
完全な行の取得
全体を取得するには特定の ID の最新のサインインに対応する行を取得するには、ごとに最大サインイン タイムスタンプを返すサブクエリに対して INNER JOIN を使用します。 ID.
SELECT tbl.id, signin, signout FROM tbl INNER JOIN ( SELECT id, MAX(signin) AS maxsign FROM tbl GROUP BY id ) ms ON tbl.id = ms.id AND signin = maxsign WHERE tbl.id=1
このクエリは、> を含む完全な最新レコードを返します。
以上がタイムスタンプに基づいて特定の ID の最新の行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。