次のフィールドを持つテーブルがあります。
domainname | domian_name_cert_no | keyvalue
はdomian_name_cert_no
ユニークで、カウンターで終わります。1、2、3など。2つ以上がdomian_name_cert_no
共有している可能性がありkeyvalue
ます。これらのケースをリストする必要があります。keyvalue
したがって、最初の出現をリストする次のステートメントがありますdomian_name_cert_no
(つまり、no = 1のみ。_2、_3の重複は気にしません)。
select domainname, domian_name_cert_no, count(keyvalue), keyvalue
from db.table
where domian_name_cert_no like '%_1'
group by (keyvalue)
having count(keyvalue)>1;
次のような1つの出力を想定します:xyx、xyx_1、10、777
次に、前の出力に基づいて、10回発生していることがわかります。次にkeyvalue
、詳細に共有されているこれらのドメイン名を一覧表示する必要があるため、次を使用しました。
SELECT a.*
FROM db.table a
INNER JOIN
(
SELECT keyvalue
FROM db.table
GROUP by keyvalue
HAVING COUNT(keyvalue) = 10
) b
ON a.keyvalue = b.keyvalue;
これらの正しい記述は、必要性についての私の説明に基づいていますか?次の2番目のステートメントで何をしたのかよくわかりませんHAVING COUNT(keyvalue) = 10
。
MySQLの専門家は、ステートメントが正しいかどうかを確認してください。