PHP中的Java HashMap替代建议?

时间:2012-11-26 16:40:19

标签: php mysql hashmap

我有一个这种表的数据库,有超过1000万行。

ID  colA    colB    Length
1   seq1    seq11   1   
2   seq1    seq11   11  
3   seq3    seq33   21  
4   seq3    seq33   14  

我想首先循环colA,获取相关的colB值,并检查是否存在相同值的其他事件。 例如在colB(seq11)中有2次出现colA(seq1),这次我必须将它们组合起来并输出长度之和。与此类似:

ID  colA  colB   Length
1   seq1  seq11  12
2   seq3  seq33  35

我是一个Java人,但因为我的同事用PHP编写了所有内容,这只是一个补充,我需要一个PHP解决方案。 使用Java我会使用hashmap,这样我就可以获得一次colA数据并只增加“Length Column”的值。


我尝试了这个查询,以便按出现次数进行分组:

SELECT COUNT(*) SeqName FROM SeqTable GROUP BY SeqName HAVING COUNT(*)>0;

2 个答案:

答案 0 :(得分:2)

这在SQL中很容易实现,而不是在编程逻辑中实现:

SELECT colA, colB, SUM(Length) as `length_sum`
FROM SeqTable
GROUP BY colA, colB

当然,您仍然需要PHP来遍历结果集并执行您想要对数据执行的任何操作。

答案 1 :(得分:1)

在PHP中,您可以使用类似哈希映射的数组

$array = Array();
$array['seq1'] = Array();
$array['seq1']['seq11'] = 0;
$array['seq1']['seq11']++;

或者你可以使用像这样的SQL查询:

select id,colA,colB,sum(Length) as Length from {tableName} group by colA,colB order by colA, colB;