ホームページ > データベース > mysql チュートリアル > MySQL で DISTINCT を使用してすべての列を選択する方法は?

MySQL で DISTINCT を使用してすべての列を選択する方法は?

Linda Hamilton
リリース: 2024-11-04 03:44:30
オリジナル
686 人が閲覧しました

How to Select All Columns with DISTINCT in MySQL?

MySQL: 複数の列を選択するための DISTINCT について

MySQL テーブルで重複する行を扱う場合、DISTINCT キーワードを使用して一意の列を取得できます。ただし、複数の列を選択するときに制限が生じる可能性もあります。この記事では、DISTINCT の使用中にすべてのフィールドを取得する問題と、重複行の最新のエントリを選択する解決策について説明します。

複数の列に対する DISTINCT の制限

DISTINCT は、特定の列にのみ適用される関数ではありません。代わりに、これは選択リスト内のすべての列に影響を与えるクエリ修飾子です。 すべて 列の値が同一である重複行を削除します。

DISTINCT の正しい構文

DISTINCT は、SELECT の直後に指定する必要があります (他のクエリ修飾子 (SQL_CALC_FOUND_ROWS など)。クエリ修飾子の後に、列名がリストされます。

例:

<code class="sql">SELECT DISTINCT foo, ticket_id FROM table...</code>
ログイン後にコピー

このクエリは、ticket_id と foo の値の個別のペアごとに行を出力します。

すべての列を選択するための解決策

重複を削除するにはすべての列が同一である必要があるため、すべてのフィールドを選択しても DISTINCT を使用することはできません。ただし、重複行の最新エントリを選択するために使用できる回避策があります。

<code class="sql">SELECT t1.*
FROM table AS t1
JOIN (
    SELECT ticket_id, MAX(row_id) AS max_id
    FROM table
    GROUP BY ticket_id
) AS t2 ON t1.ticket_id = t2.ticket_id AND t1.row_id = t2.max_id</code>
ログイン後にコピー

このクエリは、サブクエリを使用して各 ticket_id の最大 row_id を検索し、メイン テーブルをサブクエリと結合します。各 ticket_id の最新の行を選択します。

以上がMySQL で DISTINCT を使用してすべての列を選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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