【備忘録】【SQL】複数のカラムでn個以上一致するレコードを探す

ロト6のデータベースを作ってるんですが、ある当選番号とn個以上一致するレコードをSQLだけで探せないかとずっと思ってたんですがcopilotに聞いてみたらなんか出来ました。

SELECT t1.kaisuu AS kaisuu1, t1.num1, t1.num2, t1.num3, t1.num4, t1.num5, t1.num6, t2.kaisuu AS kaisuu2, t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6
FROM loto6_tousen_tbl t1
JOIN loto6_tousen_tbl t2
ON t1.kaisuu != t2.kaisuu
WHERE (
    (t1.num1 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num2 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num3 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num4 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num5 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num6 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6))
) >= 4 
order by kaisuu1, kaisuu2;

上記は4個以上の例です。

さらに特定の数値とか回数とかならWHERE条件を増やせばいいわけで。

SELECT t1.kaisuu AS kaisuu1, t1.num1, t1.num2, t1.num3, t1.num4, t1.num5, t1.num6, t2.kaisuu AS kaisuu2, t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6
FROM loto6_tousen_tbl t1
JOIN loto6_tousen_tbl t2
ON t1.kaisuu != t2.kaisuu
WHERE (
    (t1.num1 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num2 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num3 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num4 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num5 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6)) +
    (t1.num6 IN (t2.num1, t2.num2, t2.num3, t2.num4, t2.num5, t2.num6))
) >= 4 
and t1.num1 = 1 
and t1.num2 = 5 
and t1.num3 = 12 
and t1.num4 = 16 
and t1.num5 = 17
and t1.num6 = 40 
order by kaisuu1, kaisuu2;

実行してみると以下のような結果になります。
左側が比較対象元のレコード。
右側が一致するレコード。

第1回の当選番号と4つ以上一致するのが461、599、788、897、1036、1087の6回ある事がわかります。
2025/04/20時点でロト6は1991回開催されてますが、意外と全く初よりは一致する物があるので分析に活かせればと。

【備忘録】【SQL】複数のカラムでn個以上一致するレコードを探す

【備忘録】【SQL】複数のカラムでn個以上一致するレコードを探す」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

トップへ戻る