我有一个带有这种表的数据库,有超过 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 数据,然后只增加“长度列”的值。
我尝试了这个查询以按出现次数分组:
SELECT COUNT(*) SeqName FROM SeqTable GROUP BY SeqName HAVING COUNT(*)>0;
最佳答案
这在 SQL 中而不是在编程逻辑中很容易实现:
SELECT colA, colB, SUM(Length) as `length_sum`
FROM SeqTable
GROUP BY colA, colB
当然,您仍然需要 PHP 遍历结果集并对数据执行任何您想执行的操作。
关于php - PHP 中 Java HashMap 替代品的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13569196/