Ich denke, Sie haben die falschen Speicherformate für Ihre ausgewählten Nummern gewählt. Der Standardansatz besteht darin, Binärwerte zu verwenden, bei denen das N-te Bit gesetzt ist, wenn die Zahl N gewählt wird.
Betrachten Sie dieses Beispiel:Der Benutzer wählt die Zahlen „2 4 5 9 11“. Das Setzen der entsprechenden Bits auf 1 ergibt '10100011010', was dezimal 1306 ist. Jetzt wählt die Lotterie "4 7 9 12 13", was '1100101001000' ==6472 ist Ergebnis:
SELECT BIT_COUNT(1306 & 6472)
dies sagt uns sofort, dass der Benutzer 2 richtige Picks hat. Genauso einfach können Sie "vollständige" Gewinner auswählen:
SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5
oder sortieren Sie die Tickets nach der Anzahl der richtigen Picks
SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC