MySQL の複数の列にあるキーと値のペアのテーブルで重複する行をソートするにはどうすればよいですか?
<p>次のようなキーと値のペアのテーブルがあり、ユーザーがフォーム経由でデータを送信すると、フォーム上の各質問が別の行としてテーブルに追加されます。 <code>Submission_id</code> は各フォーム送信を識別します。 </p>
<pre class="brush:php;toolbar:false;"> ---- --------------- -------------- -----------
| id | submit_id | キー | 値 |
---- --------------- --------------- --------
| 1 | 10 | メーカー | Apple |
| 2 | 10 | モデル | 5s |
| 3 | 10 | ファーストネーム | ポール |
| 4 | 15 | メーカー | Apple |
| 5 | 15 | モデル | 5s |
| 6 | 15 | ファーストネーム | ポール |
| 7 | 20 | メーカー | Apple |
| 8 | 20 | モデル | 5s |
| 9 | 20 | ファーストネーム | アンドリュー |
---- --------------- -------------- -------- </pre>
<p>上記のデータからわかるように、ID 10 と 15 のコミットは同じ値を持ちます (コミット ID が異なるだけです)。これは基本的に、ユーザーが同じフォームを 2 回送信したため、重複していることが原因です。 </p>
<p>重複した送信が順番にまとめて表示されるように、これらのテーブルを並べ替える方法を見つけようとしています。上の表を考慮して、次の結果が得られるクエリを作成しようとしています。 </p>
<pre class="brush:php;toolbar:false;"> ---------------
| 提出 ID |
---------------
| 10 |
| 15 |
| 20 |
--------------- </pre>
<p>そこで、コミットの <code>manufacturer</code>、<code>model</code>、および <code>firstname</code> キーの値が同じかどうかを確認したいと思います。そうである場合、それらはコミット ID を取得し、結果内で互いに隣接して配置されます。実際のテーブルには他のキーもありますが、これら 3 つのキー (製造者、モデル、名) に基づいて重複のみを照合したいと考えています。 </p>
<p>私はこれについて長い間考えており、考えられる解決策を見つけようとしていますが、信頼できるものは何も見つかりませんでした。 </p>