Je pense que vous avez choisi les mauvais formats de stockage pour vos numéros sélectionnés. L'approche standard consiste à utiliser des valeurs binaires dont le N-ième bit est défini si le nombre N est choisi.
Considérez cet exemple :l'utilisateur choisit les nombres "2 4 5 9 11". Le réglage des bits correspondants sur 1 donne '10100011010' qui est décimal 1306. Maintenant, la loterie choisit "4 7 9 12 13" qui est '1100101001000' ==6472. Effectuez un ET binaire sur les deux valeurs et comptez le nombre de bits définis dans le résultat :
SELECT BIT_COUNT(1306 & 6472)
cela nous indique immédiatement que l'utilisateur a 2 choix corrects. Tout aussi facilement, vous pouvez sélectionner les gagnants "pleins" :
SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5
ou triez les billets par nombre de choix corrects
SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC