ホームページ > データベース > mysql チュートリアル > MySQL で複数のテーブルで SELECT DISTINCT を使用するときに重複行を処理する方法は?

MySQL で複数のテーブルで SELECT DISTINCT を使用するときに重複行を処理する方法は?

DDD
リリース: 2024-12-08 19:17:10
オリジナル
424 人が閲覧しました

How to Handle Duplicate Rows When Using SELECT DISTINCT with Multiple Tables in MySQL?

MySQL で複数のテーブルを使用した SELECT DISTINCT

MySQL クエリでは、ドリンク テーブルと Drinks_photos テーブルの間で暗黙的な結合を使用しています。 WHERE 句内の任意の条件。これにより、デカルト積が生成され、名前と価格の値が繰り返される 5 行が生成されます。これらの重複を排除するには、SELECT DISTINCT 句を使用できます。

ただし、各ドリンクのすべての写真を保持したい場合は、異なる行のみが返されるため、単純に SELECT DISTINCT を使用することはできません。代わりに、グループ化関数と集計関数を組み合わせて使用​​する必要があります。

グループ化関数と集計関数

グループ化は、指定された列に基づいて行を集計します。この場合、結果をドリンク ID でグループ化し、ドリンクごとに 1 行を取得します。次に、集計関数を使用して、グループ化された結果ごとに目的の値を選択できます。

たとえば、各ドリンクの最初の写真を取得するには、次のコマンドを使用できます。

SELECT name, price, MIN(photo) AS photo
FROM drinks
JOIN drinks_photos ON drinks.id = drinks_id
GROUP BY drinks_id;
ログイン後にコピー

MIN () 集計関数は、各写真列の最小値を返します。 group.

GROUP_CONCAT

また、各ドリンクのすべての写真を 1 つの文字列に連結したい場合は、GROUP_CONCAT() 関数を使用できます。

SELECT name, price, GROUP_CONCAT(photo, ',') AS photos
FROM drinks
JOIN drinks_photos ON drinks.id = drinks_id
GROUP BY drinks_id;
ログイン後にコピー

ただし、GROUP_CONCAT() は標準の SQL 集計ではないことに注意してください関数とその使用法はデータベースごとに異なる場合があります。

以上がMySQL で複数のテーブルで SELECT DISTINCT を使用するときに重複行を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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