ホームページ >データベース >mysql チュートリアル >MySQL で複数のテーブルを結合するときに行の重複を回避するにはどうすればよいですか?

MySQL で複数のテーブルを結合するときに行の重複を回避するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 07:14:14787ブラウズ

How to Avoid Duplicate Rows When Joining Multiple Tables in MySQL?

MySQL の複数のテーブルとの JOIN

問題:
何も指定せずに単純な JOIN を使用して MySQL の複数のテーブルからデータを選択する場合条件が一致しない場合、一致するキーごとに複数の行が結合されるため、行が重複する可能性があります。これらの重複を排除し、関連するすべての写真を含む各ドリンクの一意の行を取得するにはどうすればよいですか?

解決策:
この問題を解決するには、グループ化関数と集計関数を利用して、重複する行を結合し、そこから目的の値を選択します。

まず、行をドリンク ID でグループ化し、それぞれの行を 1 つだけ取得します。 Drink:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id 
GROUP BY drinks_id

このアプローチでは、写真が 1 枚だけ含まれるドリンクごとに 1 行が返されます。関連するすべての写真を含めるには、GROUP_CONCAT 関数を使用して写真ファイル名を 1 つの文字列に連結します。

SELECT name, price, GROUP_CONCAT(photo, ',')
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id 
GROUP BY drinks_id

このクエリは、一意のドリンク行と、すべてのドリンクを含む連結文字列を含むテーブルを生成します。各ドリンクの写真ファイル名。

GROUP_CONCAT は MySQL 固有の関数であり、他のデータベース システムではサポートされていない可能性があることに注意してください。このような場合、サブクエリや配列データ型などの代替アプローチを検討する必要がある場合があります。

以上がMySQL で複数のテーブルを結合するときに行の重複を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。