ホームページ > データベース > mysql チュートリアル > タイムスタンプに基づいて特定の ID の最新の行を効率的に取得するにはどうすればよいですか?

タイムスタンプに基づいて特定の ID の最新の行を効率的に取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-01 10:37:16
オリジナル
531 人が閲覧しました

How to Efficiently Retrieve the Latest Row for a Given ID Based on Timestamps?

指定した 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート