2017-08-04 10 views
-2

私は、データベース内のすべての重複を示したいと思います(Example of the table here) :

ファーストネーム(meta_key> _field_5)、
姓(meta_key > _field_6)、
メール(meta_key> _field_7)を表示する重複

したがって、元のものと同じ3つのパラメータを持つ複製のみを表示します。この場合、最終結果は2です(See the screenshot [Highlighted in red])。

ありがとうございます!

種類について、

ジョナ

答えて

0

ここでピボットが役立つと思います。

以下の3つの値が重複している場合、つまりオリジナルと呼ばれるものがある場合は、最も古いpost_idを見つけることができます。

select min(post_id) 
from (
    select post_id, 
     max(case when meta_key = '_field_5' then meta_value end) as first_name, 
     max(case when meta_key = '_field_6' then meta_value end) as last_name, 
     max(case when meta_key = '_field_7' then meta_value end) as email 
    from your_table 
    where meta_key in ('_field_5', '_field_6', '_field_7') 
    group by post_id 
    ) t 
group by first_name, last_name, email 
having count(*) > 1; 

このグループをグループから除外して、重複を取得することができます。

select post_id, 
    max(case when meta_key = '_field_5' then meta_value end) as first_name, 
    max(case when meta_key = '_field_6' then meta_value end) as last_name, 
    max(case when meta_key = '_field_7' then meta_value end) as email 
from your_table 
where meta_key in ('_field_5', '_field_6', '_field_7') 
group by post_id 
having post_id != (
    select min(post_id) 
    from (
     select post_id, 
      max(case when meta_key = '_field_5' then meta_value end) as first_name, 
      max(case when meta_key = '_field_6' then meta_value end) as last_name, 
      max(case when meta_key = '_field_7' then meta_value end) as email 
     from your_table 
     where meta_key in ('_field_5', '_field_6', '_field_7') 
     group by post_id 
     ) t 
    group by first_name, last_name, email 
    having count(*) > 1 
    ); 
0

が今すぐにこれを実行する2番目のクエリに応じとしてthird_table_nameを作成し、次のように最初のテーブルは、現在両方のテーブルに結合を実行同じである別のテーブルを作成しますクエリ

1.create second_table_name as select * from first_table_name; 
    2.select * from first_table_name t1 join second_table_name t2 on 
    t1.metavalue=t2.metavalue and t1.meta-key=t2.metakey; 
    3.select * from third_table_name where count(distinct(name))=3 and 
    count(distinct(meta-key))=3 
関連する問題