選択した番号に対して間違ったストレージ形式を選択したと思います。標準的なアプローチは、数値Nが選択された場合、N番目のビットが設定されたバイナリ値を使用することです。
この例を考えてみましょう。ユーザーは「245911」という数字を選択します。対応するビットを1に設定すると、10進数の1306である「10100011010」が得られます。宝くじは「1100101001000」==6472である「479 12 13」を選択します。両方の値に対してビット単位のANDを実行し、結果:
SELECT BIT_COUNT(1306 & 6472)
これは、ユーザーが2つの正しいピックを持っていることをすぐに示します。同様に簡単に「完全な」勝者を選択できます:
SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5
または、正しいピックの数でチケットを並べ替えます
SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC