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

MySQL で複数のテーブルから選択するときに重複行を削除するにはどうすればよいですか?

DDD
リリース: 2024-12-18 03:38:09
オリジナル
446 人が閲覧しました

How to Eliminate Duplicate Rows When Selecting from Multiple Tables in MySQL?

MySQL での複数のテーブルからの SELECT と重複の処理

複数のテーブルから選択する場合、リンクする列の値が一致するために重複行が発生することがよくあります。このシナリオでは、特定の情報を保持しながらこれらの重複を削除する必要がある場合があります。

問題ステートメント:

次のクエリは、「ドリンク」と「ドリンク写真」から情報を取得します。 " tables:

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

ただし、ドリンクごとに複数の写真エントリが表示されるため、行が重複します。目標は、これらの重複を排除し、名前、価格、各ドリンクに関連付けられたすべての写真を含む一意の行を取得することです。

解決策:

この問題に対処するには、データの整合性を維持するには、クエリでグループ化関数と集計関数を使用できます。

グループ化と集計関数:

  • GROUP BY: 指定された列に同じ値を持つ行をグループ化します。
  • 集計関数: 取得する行のグループに対して実行される操作 (COUNT、MAX、MIN など)単一の値。

この場合、「ドリンク 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
ログイン後にコピー
  • GROUP_CONCAT: 指定された列の値を、指定された区切り文字 (この場合は、カンマ).

結果:

このクエリは次の結果を返します:

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

説明:

  • 各ドリンクには 1 つだけが含まれるようになりました行。
  • 「all_photos」列には、ドリンクに関連付けられたすべての写真エントリのカンマ区切りのリストが含まれます。

注:

  • GROUP_CONCAT は標準化された SQL 集計関数ではないため、その動作はデータベースによって異なる場合があります
  • 写真のファイル名にカンマが含まれる状況が発生した場合は、テーブル構造を変更するか、クライアント側でカスタム関数を使用して連結された文字列を分割するなど、別のアプローチを検討する必要がある場合があります。

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

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