ホームページ > データベース > mysql チュートリアル > 共有列に基づいて最新の 3 つの異なるレコード ID を見つけるにはどうすればよいですか?

共有列に基づいて最新の 3 つの異なるレコード ID を見つけるにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-29 16:06:13
オリジナル
271 人が閲覧しました

How Can I Find the Three Most Recent Distinct Record IDs Based on a Shared Column?

どの個別のレコード ID が最新ですか?

特定のデータベース テーブルでは、特定のレコードが共有列によって相互接続されています。目的は、この共有列値に関連付けられた最新の 3 つの個別のレコード ID を識別することです。

これを達成するには、以下のサンプル テーブルを検討してください。

id time text otheridentifier
1 6 apple 4
2 7 orange 4
3 8 banana 3
4 9 pear 3
5 10 grape 2

最初は、直感的なアプローチが考えられます。 otheridentifier 列でグループ化し、その後時間の降順で並べ替えます。ただし、この方法では望ましい結果が得られません:

SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3;
ログイン後にコピー

このクエリには、正しい ID 4 と 2 ではなく、誤って ID 3 と 1 のレコードが含まれます。この不一致の理由は、クエリの実行にあります。 order: グループ化は順序付けよりも優先されます。

意図した結果を得るには、より複雑な解決策が必要です。 required:

SELECT *
FROM `table`
WHERE `id` = (
    SELECT `id`
    FROM `table` as `alt`
    WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
    ORDER BY `time` DESC
    LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3;
ログイン後にコピー

この変更されたクエリは、サブクエリを利用して、個別の他の識別子の値ごとに最新の時刻値を持つ単一の ID を選択します。この最適化されたクエリにより、個別のレコード識別子 5、4、および 2 の望ましい出力が保証されます。

以上が共有列に基づいて最新の 3 つの異なるレコード ID を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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