sql >> Databasteknik >  >> RDS >> Mysql

Php lotteri problem med flera vinnare

Jag tror att du har valt fel lagringsformat för dina valda nummer. Standardmetoden är att använda binära värden som har N:te bit satt om talet N väljs.

Tänk på det här exemplet:användaren väljer siffrorna "2 4 5 9 11". Att sätta motsvarande bitar till 1 ger '10100011010' som är decimal 1306. Nu väljer lotteriet "4 7 9 12 13" som är '1100101001000' ==6472. Utför en bitvis OCH på båda värdena och räkna in antalet bitar resultat:

SELECT BIT_COUNT(1306 & 6472)

detta talar om för oss omedelbart att användaren har 2 korrekta val. Lika enkelt kan du välja "fulla" vinnare:

SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5

eller sortera biljetterna efter antalet korrekta val

SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC


  1. MySQL-frågan blivit vild?

  2. Använder LIKE i en Oracle IN-klausul

  3. Skanningar av allokeringsorder

  4. SQL:Vad är standardordningen efter för frågor?