gpt4 book ai didi

php - 从 5 列表 MySQL 中选择 2-3 个数字组合

转载 作者:行者123 更新时间:2023-11-29 06:50:32 25 4
gpt4 key购买 nike

表结构:

 MyTable (
ID INT AUTO_INCREMENT,
Num1 INT,
Num2 INT,
Num3 INT,
Num4 INT,
PRIMARY KEY(ID)
)engine=InnoDB;

现在我有大约 20-30k 记录。 Num1、Num2、Num3Num4 只是一些随机数。我正在尝试从此表中选择 23 数字组合。例如,假设我在表中有以下行:

ID    Num1   Num2   Num3   Num4
1 20 11 9 150
2 30 11 20 19
3 40 45 11 20

我想选择最常用的 2 数字组合,然后选择 3 数字组合。所以请注意,2011 在表中出现 3 表示组合 20,11 或 11,20 没有无论订单有 count 3 等等其他组合。

我想在 PHP 数组中检索此数据,以便我可以进行一些计算或在屏幕上显示。

到目前为止我尝试了什么:

 SELECT *
FROM MyTable
WHERE (Num1 = :num1 AND Num2 = :num2) OR (Num1 = :num1 AND Num3 = :num2) OR
(Num1 = :num1 AND Num4 = :num2) OR (Num2 = :num1 AND Num1 = :num2) OR
(Num2 = :num1 AND Num3 = :num2) OR (Num2 = :num1 AND Num4 = :num2) OR
***
***

等等所有组合。现在,如果我尝试将它用于 3 数字组合,这会变得很烦人。

  1. 有没有更好、更有效的方法?
  2. 我是否需要重组表格以使其更容易?
  3. 重构后的表会被规范化吗? (现在我认为是标准化的,如果不是请告诉我)

最佳答案

案例2组合

我认为你应该考虑像这样在一个大矩阵中存储信息:

num  times_appearing_with_number_1 times_appearing_with_number_2 ...

对于像这样的情况

 1 8 2 3
1 7 23 24

会是这样的:

 num 1 2 3 4 5 6 ...
1 - 1 1 0 0 0 ...
2 1 - 1 0 0 0 ...

然后检查哪些行的数字更大。索引对于获取它对应的数字很有用。

案例3组合

与 3D 矩阵相同。

要提供这些表,您应该只从 MySQL 中获取信息然后循环。

关于php - 从 5 列表 MySQL 中选择 2-3 个数字组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724142/

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