効率的な抽出を備えた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 サイトの他の関連記事を参照してください。