この種のテーブルを含むデータベースがあり、1,000万行を超えています。
ID colA colB Length
1 seq1 seq11 1
2 seq1 seq11 11
3 seq3 seq33 21
4 seq3 seq33 14
最初にcolAをループして、関連するcolB値を取得し、同じ値の他のオカレンスがあるかどうかを確認したいと思います。たとえば、colB(seq11)にはcolA(seq1)が2回出現しますが、今回はそれらを組み合わせて長さの合計を出力する必要があります。これに似ています:
ID colA colB Length
1 seq1 seq11 12
2 seq3 seq33 35
私は少しJavaの人ですが、同僚がすべてをPHPで記述しており、これは単なる追加であるため、PHPソリューションが必要です。Javaでは、ハッシュマップを使用していたので、colAデータを1回取得し、「LengthColumn」の値をインクリメントするだけでした。
発生ごとにグループ化するために、このクエリを試しました。
SELECT COUNT(*) SeqName FROM SeqTable GROUP BY SeqName HAVING COUNT(*)>0;