Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problemy z loterią PHP z wieloma zwycięzcami

Myślę, że wybrałeś niewłaściwe formaty przechowywania dla wybranych numerów. Standardowym podejściem jest użycie wartości binarnych, które mają ustawiony N-ty bit, jeśli wybrano liczbę N.

Rozważmy następujący przykład:użytkownik wybiera liczby „2 4 5 9 11”. Ustawienie odpowiednich bitów na 1 daje „10100011010”, co jest liczbą dziesiętną 1306. Teraz loteria wybiera „4 7 9 12 13”, czyli „1100101001000” ==6472. Wykonaj bitowe AND na obu wartościach i policz liczbę bitów ustawionych w wynik:

SELECT BIT_COUNT(1306 & 6472)

to od razu mówi nam, że użytkownik ma 2 prawidłowe typy. Równie łatwo możesz wybrać „pełnych” zwycięzców:

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

lub posortuj bilety według liczby poprawnych typów

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aby uruchomić plik .sql w MySQL

  2. MySQL:Policz dwie rzeczy w jednym zapytaniu?

  3. Nieprawidłowa precyzja dziesiętna MySQL i PHP

  4. Korzystanie z MySQL z usługami heterogenicznymi Oracle

  5. jak przechowywać link do umieszczenia na youtube w bazie danych?