首页 文章

MySQL彩票搜索

提问于
浏览
2

我正在寻找一个MySQL唯一的解决方案来搜索彩票的列表与数字绘制 .

我有自己的列中有四个数字的门票:ball1,ball2,ball3,ball4 . 这些不一定按升序排列 .

查询应该只返回行以进行进一步的PHP处理 .

我可以通过PHP查看所有结果,但我正在寻找更有效的方法 .

有任何想法吗?

1 回答

  • 1

    考虑这个例子 .

    假设我们想要匹配这四个球中至少有三个组合的所有结果(2,4,5,10)

    我们可以这样做......

    SELECT * FROM lottery;
    +----+-------+-------+-------+-------+
    | id | ball1 | ball2 | ball3 | ball4 |
    +----+-------+-------+-------+-------+
    |  1 |     2 |     5 |    10 |     4 |
    |  2 |     5 |     9 |     4 |     1 |
    |  3 |     3 |     6 |     4 |     9 |
    |  4 |     4 |     8 |     2 |     3 |
    |  5 |     8 |     9 |     4 |    10 |
    |  6 |     9 |     2 |     1 |     3 |
    |  7 |     2 |     3 |     7 |     8 |
    |  8 |     3 |     8 |     2 |     6 |
    |  9 |     2 |     5 |     1 |    10 |
    | 10 |     3 |     2 |     9 |     5 |
    +----+-------+-------+-------+-------+
    
    SELECT id
         , GROUP_CONCAT(ball ORDER BY ball) balls
      FROM 
         ( SELECT id,ball1 ball FROM lottery
           UNION
           SELECT id,ball2 ball FROM lottery
           UNION
           SELECT id,ball3 ball FROM lottery
           UNION
           SELECT id,ball4 ball FROM lottery
         ) x
     WHERE ball IN (2,5,10,4)
     GROUP 
        BY id 
    HAVING COUNT(*) >= 3;
    
    +----+----------+
    | id | balls    |
    +----+----------+
    |  1 | 2,4,5,10 |
    |  9 | 2,5,10   |
    +----+----------+
    

相关问题