ホームページ >データベース >mysql チュートリアル >MySQL で特定の ID 間で重複するスコア値を見つけるにはどうすればよいですか?

MySQL で特定の ID 間で重複するスコア値を見つけるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-22 20:56:10304ブラウズ

How to Find Duplicate Score Values Across Specific IDs in MySQL?

MySQL で重複するカラム値を取得するためのトリック

MySQL データベースでは、特定の列で同じ値を共有する行を取得する必要がある場合があります。次の表を考えてみましょう。「スコア」列には、さまざまな「ID」に関連付けられた値が含まれています。

ID 分数
1 95
2 100
3 88
4 100
5 73

「ID」が 2 と 4 である 2 つの行に出現するスコアを取得するとします。

解決策:

MySQL を使用してこれを実現するには、次のクエリを使用できます:

<code class="language-sql">SELECT score
FROM t
GROUP BY score
HAVING COUNT(*) > 1 AND SUM(CASE WHEN id = 2 THEN 1 ELSE 0 END) > 0 AND SUM(CASE WHEN id = 4 THEN 1 ELSE 0 END) > 0;</code>

このクエリは次の手順を実行します:

  1. GROUP BY: 「スコア」列に基づいて行をグループ化します。
  2. *Count (COUNT()):** 各グループの行数をカウントし、重複するスコアのみが返されるようにします。
  3. Conditional Count (SUM(CASE WHEN ... END)): 各グループ内の ID 2 と ID 4 の行の数をそれぞれカウントします。
  4. HAVING 句: HAVING 句は、スコア カウントが 1 より大きいスコアのみが返され、ID 2 と ID 4 のスコアが両方とも 0 より大きいことを保証します。

この場合、結果は次のようになります:

<code>分数
100</code>

このクエリは、「ID」が 2 と 4 の両方の行に出現するスコア値を効果的に取得します。 改良されたクエリでは、フィルター条件がより明確に表現され、潜在的なロジック エラーが回避されます。

以上がMySQL で特定の ID 間で重複するスコア値を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。