ホームページ > データベース > mysql チュートリアル > 重複した写真を含む複数の MySQL テーブルから一意のドリンク データを選択する方法

重複した写真を含む複数の MySQL テーブルから一意のドリンク データを選択する方法

Patricia Arquette
リリース: 2024-12-17 12:47:24
オリジナル
275 人が閲覧しました

How to Select Unique Drink Data from Multiple MySQL Tables with Duplicate Photos?

MySQL の複数のテーブルから一意の結果を選択する

MySQL では、複数のテーブル間で JOIN 操作を実行すると、重複行が発生する可能性があります。結果セット内。これは、別のテーブルの 1 つのエントリに関連する複数の行を含むテーブルからデータを選択するときによく発生します。

問題ステートメント

次の例を考えてみましょう:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id;
ログイン後にコピー

このクエリは、ドリンク テーブルと Drinks_photos テーブルから各ドリンクの名前、価格、写真を取得しようとします。ただし、1 つの飲み物に複数の写真が関連付けられている可能性があるため、飲み物ごとに重複した行が生成されます。

解決策

重複を排除し、各飲み物のみが表示されるようにするには一度、グループ化メカニズムを組み込む必要があります。 MySQL では、これを実現するためのいくつかの方法が提供されています。

グループ化と集計の使用

1 つのオプションは、GROUP BY 句を使用して、一意のドリンクに基づいて結果をグループ化し、適用することです。必要な列の値を選択するための集計関数:

SELECT name, price, photo
FROM drinks, drinks_photos
WHERE drinks.id = drinks_id
GROUP BY drinks_id;
ログイン後にコピー

このクエリでは、ドリンクス ID は列をグループ化して、異なる飲み物のみが結果に含まれるようにします。また、各ドリンクには複数の写真があるため、どの写真を表示するかを指定する必要があります。この例では写真が使用されていますが、MIN(写真) または MAX(写真) に置き換えて、それぞれ昇順または降順で最初または最後の写真を取得できます。

GROUP_CONCAT の使用

代わりに、MySQL には 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 テーブルから一意のドリンク データを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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