複数のテーブルから選択する場合、リンクする列の値が一致するために重複行が発生することがよくあります。このシナリオでは、特定の情報を保持しながらこれらの重複を削除する必要がある場合があります。
問題ステートメント:
次のクエリは、「ドリンク」と「ドリンク写真」から情報を取得します。 " tables:
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id
ただし、ドリンクごとに複数の写真エントリが表示されるため、行が重複します。目標は、これらの重複を排除し、名前、価格、各ドリンクに関連付けられたすべての写真を含む一意の行を取得することです。
解決策:
この問題に対処するには、データの整合性を維持するには、クエリでグループ化関数と集計関数を使用できます。
グループ化と集計関数:
この場合、「ドリンク ID」列でグループ化して、ドリンクごとに一意の行を取得できます。
SQL クエリ:
ドリンクごとに 1 つの行を取得し、すべての写真エントリを保持するには、次のコードを使用できます。 query:
SELECT name, price, GROUP_CONCAT(photo SEPARATOR ',') AS all_photos FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id
結果:
このクエリは次の結果を返します:
name | price | all_photos |
---|---|---|
fanta | 5 | ./images/fanta-1.jpg,./images/fanta-2.jpg,./images/fanta-3.jpg |
dew | 4 | ./images/dew-1.jpg,./images/dew-2.jpg |
説明:
注:
以上がMySQL で複数のテーブルから選択するときに重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。