tôi nghĩ rằng bạn đã chọn sai định dạng lưu trữ cho các số đã chọn. Cách tiếp cận tiêu chuẩn là sử dụng các giá trị nhị phân có N-thứ bit được đặt nếu số N được chọn.
Hãy xem xét ví dụ này:người dùng chọn số "2 4 5 9 11". Đặt các bit tương ứng thành 1 sẽ cho '10100011010' là số thập phân 1306. Bây giờ xổ số chọn "4 7 9 12 13" là '1100101001000' ==6472. Thực hiện theo chiều dọc bit AND trên cả hai giá trị và đếm số bit được đặt trong kết quả:
SELECT BIT_COUNT(1306 & 6472)
điều này ngay lập tức cho chúng tôi biết rằng người dùng có 2 lựa chọn chính xác. Thật dễ dàng, bạn có thể chọn người chiến thắng "đầy đủ":
SELECT * FROM tickets WHERE BIT_COUNT(tickets.pick & lotto.pick) = 5
hoặc sắp xếp các vé theo số lần chọn đúng
SELECT * FROM tickets ORDER BY BIT_COUNT(tickets.pick & lotto.pick) DESC