検索

ホームページ  >  に質問  >  本文

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>
P粉115840076P粉115840076437日前481

全員に返信(1)返信します

  • P粉659518294

    P粉6595182942023-09-06 00:57:21

    これはキーと値のテーブルではありません。多くの場合、エンティティ属性値テーブル/関係/スキーマと呼ばれます。

    問題を見ると、テーブルが通常の第 1 正規形と第 2 正規形で配置されている場合、これは簡単です。値を連結し、それらの値でグループ化し、カウントするだけです....

    リーリー

    または接続を使用します....

    リーリー

    または、並べ替えと隣接する行の比較を使用します....

    リーリー

    したがって、解決策は、単純にデータ を通常の関係のように 見せることです....

    リーリー

    連結とシーケンスベースのソリューションが明らかになることを願っています。

    返事
    0
  • キャンセル返事