Creo que ha elegido los formatos de almacenamiento incorrectos para los números seleccionados. El enfoque estándar es utilizar valores binarios que tienen N-th bit establecido si se elige el número N.
Considere este ejemplo:el usuario elige los números "2 4 5 9 11". Establecer los bits correspondientes en 1 da '10100011010' que es el decimal 1306. Ahora la lotería elige "4 7 9 12 13" que es '1100101001000' ==6472. Realice un AND bit a bit en ambos valores y cuente el número de bits establecidos en el resultado:
SELECT BIT_COUNT(1306 & 6472)
esto nos dice inmediatamente que el usuario tiene 2 selecciones correctas. Con la misma facilidad, puede seleccionar ganadores "completos":
SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5
u ordenar los boletos por el número de selecciones correctas
SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC