ホームページ > データベース > mysql チュートリアル > MAX() と GROUP BY を使用して MySQL で各 RID の最新の PID を取得するにはどうすればよいですか?

MAX() と GROUP BY を使用して MySQL で各 RID の最新の PID を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-30 02:02:09
オリジナル
548 人が閲覧しました

How to Get the Latest PID for Each RID in MySQL Using MAX() and GROUP BY?

MySQL クエリ: MAX() GROUP BY

質問:

最新の行の PID を取得するにはどうすればよいですか? MAX() と GROUP を組み合わせた MySQL クエリを使用して、テーブル内の各 RID に対してBY?

サンプル データ:

CREATE TABLE theTable (
    `pid` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `cost` INT UNSIGNED NOT NULL,
    `rid` INT NOT NULL,
) Engine=InnoDB;

INSERT INTO theTable (`pid`, `timestamp`, `cost`, `rid`)
VALUES
  (1, '2011-04-14 01:05:07', 1122, 1),
  (2, '2011-04-14 00:05:07', 2233, 1),
  (3, '2011-04-14 01:05:41', 4455, 2),
  (4, '2011-04-14 01:01:11', 5566, 2),
  (5, '2011-04-14 01:06:06', 345, 1),
  (6, '2011-04-13 22:06:06', 543, 2),
  (7, '2011-04-14 01:14:14', 5435, 3),
  (8, '2011-04-14 01:10:13', 6767, 3)
;
ログイン後にコピー

望ましい結果:

pid | MAX(timestamp)      | rid
-----------------------------------
5   | 2011-04-14 01:06:06 | 1
3   | 2011-04-14 01:05:41 | 2
7   | 2011-04-14 01:14:14 | 3
ログイン後にコピー

不正解クエリ:

SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
ログイン後にコピー

このクエリは、最新ではなく、各 RID の最初に出現した PID を返します。

正しいクエリ:

各 RID の最新行の PID を取得するには、次のコマンドを使用できます。 query:

SELECT pid, MAX(timestamp) AS latest_timestamp, rid
FROM theTable
GROUP BY rid
HAVING latest_timestamp = MAX(timestamp)
ログイン後にコピー

このクエリは、最初に GROUP BY 句を使用して、RID 列ごとに行をグループ化します。次に、MAX() 関数を使用して、行の各グループの最大タイムスタンプを計算します。最後に、HAVING 句を使用して結果をフィルタリングし、各 RID の最新のタイムスタンプを持つ行のみを保持します。

以上がMAX() と GROUP BY を使用して MySQL で各 RID の最新の PID を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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