ホームページ >データベース >mysql チュートリアル >MySQL で複数のテーブルを結合するときに行の重複を回避するにはどうすればよいですか?
問題:
何も指定せずに単純な 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 サイトの他の関連記事を参照してください。