Мисля, че сте избрали грешни формати за съхранение за избраните от вас номера. Стандартният подход е да се използват двоични стойности, които имат зададен N-ти бит, ако е избрано числото N.
Помислете за този пример:потребителят избира числа "2 4 5 9 11". Задаването на съответните битове на 1 дава '10100011010', което е десетично 1306. Сега лотарията избира "4 7 9 12 13", което е '1100101001000' ==6472. Извършете побитово И за двете стойности и пребройте броя на битовете резултат:
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