penso che tu abbia scelto i formati di archiviazione sbagliati per i numeri scelti. L'approccio standard consiste nell'utilizzare valori binari a cui è impostato l'N-esimo bit se viene scelto il numero N.
Considera questo esempio:l'utente sceglie i numeri "2 4 5 9 11". Impostando i bit corrispondenti su 1 si ottiene '10100011010' che è decimale 1306. Ora la lotteria seleziona "4 7 9 12 13" che è '1100101001000' ==6472. Eseguire un AND bit per bit su entrambi i valori e contare il numero di bit impostato nel risultato:
SELECT BIT_COUNT(1306 & 6472)
questo ci dice immediatamente che l'utente ha 2 scelte corrette. Altrettanto facile puoi selezionare i vincitori "completi":
SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5
oppure ordina i biglietti in base al numero di scelte corrette
SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC