表结构:
MyTable (
ID INT AUTO_INCREMENT,
Num1 INT,
Num2 INT,
Num3 INT,
Num4 INT,
PRIMARY KEY(ID)
)engine=InnoDB;
现在我有大约20-30k条记录。Num1, Num2, Num3
并且Num4
只是一些随机数。我试图从这个表中选择2
和3
编号组合。例如,假设我在表中有以下行:
ID Num1 Num2 Num3 Num4
1 20 11 9 150
2 30 11 20 19
3 40 45 11 20
我想选择最常用的2 个数字组合,然后选择3 个数字组合。所以请注意,20和11在表中出现3次意味着组合20,11 or 11,20
无关紧要,订单计数为 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 个数字组合,这会很烦人。
- 有没有更好更有效的方法来做到这一点?
- 我需要重组表格以使其更容易吗?
- 重组表会被规范化吗?(现在我认为是标准化的,如果不是请告诉我)