gpt4 book ai didi

database - 存储数字列表和检索它们的最佳方法

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:22 25 4
gpt4 key购买 nike

存储随机数列表(如乐透/宾果号码)并检索它们的最佳方法是什么?我想在数据库中存储许多行,其中每行包含 5-10 个数字,范围从 0 到 90。我将存储大量这些行。我希望能够检索与新生成的行至少有 X 个数字相同的行。

例子:

[3,4,33,67,85,99]
[55,56,77,89,98,99]
[3,4,23,47,85,91]

那些在数据库上

我会生成这个:[1,2,11,45,47,88] 现在我想获取至少有 1 个数字与此数字相同的行。

最简单(也是最愚蠢?)的方法是选择 6 并检查是否有相似的结果。

我想用一个大的二进制字符串来存储数字,比如000000000000000000000100000000010010110000000000000000000000000 有 99 个数字,其中每个数字代表从 1 到 99 的数字,所以如果我在第 44 个位置有 1,这意味着我在该行有 44 个。这种方法可能会将困难的任务转移给 Db,但它又不是很聪明。

有什么建议吗?

最佳答案

你应该像这样创建一个表:

TicketId Number
1 3
1 4
1 33
1 67
1 85
1 99
2 55
2 56
2 77
etc...

然后你的查询,至少对于 X = 1,变成:

SELECT DISTINCT TicketId FROM Ticket WHERE Number IN (1, 2, 11, 45, 47, 88)

这样做的好处是可以使用索引代替全表扫描。

对于大于一的 X,您可以执行以下操作:

SELECT TicketId, COUNT(*) AS cnt
FROM Ticket WHERE Number IN (1, 2, 11, 45, 47, 88)
GROUP BY TicketId
HAVING COUNT(*) >= 3

同样,这将能够使用索引。

关于database - 存储数字列表和检索它们的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com