2

私はPHPとMySQLを扱っています。優先度に基づいて重複した結果を除外する効率的な方法を誰か教えてもらえますか?

例:

私はテーブルを持っています:

ID  |  Priority 1  |  Priority 2  |  Priority 3  |  E-Mail
--------------------------------------------------------------
1   |  Apple       |  One         |  Low         | abc@abc.com
2   |  Banana      |  Two         |  Medium      | def@abc.com
3   |  Banana      |  Two         |  High        | def@abc.com
4   |  Banana      |  Two         |  High        | def@abc.com
5   |  Peach       |  Three       |  Low         | ghi@abc.com
6   |  Peach       |  Four        |  High        | ghi@abc.com

上記の例では、行 1、3 (または 4)、および 6 のみを取得する方法を探しています。
つまり、行 2、3、4、および 5、6 の電子メールは同じであるため、それらは重複しています。記録。優先度に基づいてレコードを選択したい。
重複レコードの優先度1が同じなら優先度2へ、それも同じなら優先度3へ、同じならどちらを選んでも構いません。
ただし、違いがある場合は、優先度の高い方のレコードを選択します。上記の例では、優先順位は次のとおりです。

Peach -> Banana -> Apple
Four -> Three -> Two -> One
High -> Medium -> Low

次に、結果を別のデータベースに挿入します。

これまでのところ、重複していないものを取得するためのクエリがあります。重複を処理する 2 番目のクエリを作成することを考えていました。
最初のクエリは、約 20,000 レコードを処理します。2 番目のクエリは、約 5,000 レコードを処理します。

ただし、それを達成する効率的な方法はわかりません。

助けていただければ幸いです。

ありがとうございました。

編集: タイプミス: 行 1、3/4、および 6 が必要でした (1、2、および 6 ではありません)

4

1 に答える 1