ホームページ > データベース > mysql チュートリアル > SQLの最大日付値で一意の行を効率的に取得する方法は?

SQLの最大日付値で一意の行を効率的に取得する方法は?

Linda Hamilton
リリース: 2025-01-25 18:36:14
オリジナル
116 人が閲覧しました

How to Efficiently Fetch Unique Rows with Maximum Date Values in SQL?

効率的な抽出を備えたSQLテーブルの最大値を持つ唯一の行

SQLテーブルには、同じ列値を持つ複数の行が含まれることがよくあります。このタイプのテーブルからデータを取得した場合、特定の列の最新情報または最大値を使用して唯一の行を抽出することが重要です。これは、データの継続的な更新に特に役立ちます。

「myTable」と呼ばれるテーブルには、「userid」、「value」、「日付」が含まれると仮定します。各一意の「ユーザーID」値に対応する「ユーザーID」と「値」を取得するために、サブクエリに依存せずに効率的なSQLテクノロジーを使用できます。

このクエリでは、「myTable」の2つのインスタンス(T1とT2)の間の左の外部接続を使用します。接続条件により、T1の大きな「日付」値に一致する線が保証されます。その後、WHERE句は、T2のより大きな「日付」値を持つ一致する線ですべての行を除外し、各一意の「ユーザーID」の最大の「日付」値に対応する行のみを残します。

<code class="language-sql">SELECT t1.*
FROM mytable t1
LEFT OUTER JOIN mytable t2
ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date")
WHERE t2.UserId IS NULL;</code>
ログイン後にコピー
同じ最大日付の複数の行を考慮する別の方法は次のとおりです。

このバリアントでは、より細かい接続条件を使用して、同じ最大の「日付」値で潜在的な複製を処理します。追加の条件(T1.ID&LT; T2.ID)を導入することにより、最小IDの一意のラインのみを確保できます。 (

が主キーまたは一意の識別子であると仮定しています)

これらの方法により、SQLテーブルから最大日付値を使用して一意の行を効率的に抽出し、複雑なサブクエリを回避し、クエリの効率を改善できます。
<code class="language-sql">SELECT t1.*
FROM mytable t1
LEFT OUTER JOIN mytable t2
ON t1.UserId = t2.UserId AND ((t1."Date" < t2."Date") OR (t1."Date" = t2."Date" AND t1.id < t2.id))
WHERE t2.UserId IS NULL;</code>
ログイン後にコピー

以上がSQLの最大日付値で一意の行を効率的に取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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