0

我可能需要 PHP 或其他语言来完成这项工作,但最好直接使用 MYSQL 中的解决方案。

我整理了一份去年纽约州彩票中奖号码的清单。我在 MYSQL 中创建了一个 4 列的表来存储数据。一个用于日期,一个用于中奖彩票号码,一个用于奖金号码,一个用于支付。在对如何存储彩票号码(我认为是整数数组)进行了一些研究之后,我发现了使用 longtext 数据类型的建议。输入数据时使用管道分隔每个值,如下所示:01|34|35|36|56|59。这些数字始终按升序排列,给出两位数,并且不要超过 59。

我的流程的下一步是创建一个表格,显示每个数字发生的频率。这是我的这个东西的伪代码:

1 Create table "Number_Frequency"
2 Create column "Number"(Type int)
3 Create column "Frequency"(Type int, initial value 0)
4 Look at table "new_table"
5 Look at column "numbers"
6 Look at first row
7 Look at first two digits
  7A If this two digit number isn't in the column "Number" in the table "Number_Frequency", add to column "Number" in table "Number_Frequency" and set corresponding "Frequency" to 1
  7B Else if number is already in column "Number" increase the value of frequency by 1
8 Look for a pipe symbol
  8A If there is a pipe symbol, repeat all parts of step 7 for the next two digits after the pipe symbol.
  8B Else if there is another row, look at the first two digits of that row, and start from step 7A
  8C Else terminate.

正如你所看到的,我非常清楚自己想要做什么。我有几个简单的问题要问:这可以只在 MYSQL 中完成吗?更重要的是,是否有一个重要的、明显的理由可以说明人们不应该费心去尝试?如果有,那是什么原因?

4

1 回答 1

1

将一组固定大小的数字存储为连接字符串是疯狂的。

考虑将它们存储在 6 个单独的列中,每个列都是整数类型。或者,将它们存储在一个只有两列的表中:draw_idvalue; 每次抽奖在此表中有 6 个条目。然后构造一个查询来查找给定值的出现次数变得微不足道。

所以像:

draw_values
===========

draw_id       value
-------------------
538           1
538           34
538           35
538           36
538           56
538           59
539           5
539           10
539           13
539           27
539           38
539           56
...


draw
====

draw_id       winner_id       payout
---------------------------------------
538           127740          1000000
539           839820          1500000
...

wheredraw_id是主表的外键,其中包含每次抽奖的一次性详细信息(例如支出)。

于 2011-11-09T00:57:06.573 回答