Php 为mysql中的重复字段选择公司id

Php 为mysql中的重复字段选择公司id,php,mysql,Php,Mysql,我想从重复的字段中选择公司id > > -------------------------------------------------------------------- | id | company_id | contact_name | ph_no | mobile_no | email | > ----------------------------------------------------------------------

我想从重复的字段中选择公司id

>   
> -------------------------------------------------------------------- 
| id  |  company_id | contact_name  | ph_no  | mobile_no | email        | 
> ---------------------------------------------------------------------- 
| 1   | 402         | shuhaib       |1234    |7788       |abc@rain.com  | 
| 2   | 402         | salih         |1234    |7877       |xqw@rain.com  | 
| 3   | 410         | musammil      |1234    |4545       |abc@rain.com  | 
| 4   | 411         | haris         |1234    |9495       |wew@rain.com  | 
| 5   | 412         | dileep        |5467    |5852       |bgf@rain.com  |
| 6   | 412         | wahab         |8019    |9858       |mng@rain.com  | 
| 11  | 414         | jithesh       |7025    |9495       |trf@rain.com  | 
> ----------------------------------------------------------------------
当ph_no=ph_no或mobile_no=mobile_no或email=email时,我想从上面的单个表中获取company_id和replicate_company_id, 仅选择公司id!=重复的公司id。 结果是

 ---------------------------------------
| company_id    | duplicate_company_id |
 ---------------------------------------
| 402           | 410                  | because same ph_no ,email
| 402           | 411                  | because same ph_no   
| 411           | 414                  | because same mobile_no
  --------------------------------------
我的查询有时不起作用

SELECT a.company_id,
       max(b.id) AS duplicate_company_id
FROM
  (SELECT company_id,
          ph_no,
          mobile_no,
          email
   FROM crm_customer_contacts
   WHERE IFNULL(ph_no, '') != ''
     OR IFNULL(mobile_no, '') != ''
     OR IFNULL(email, '') != ''
   GROUP BY ph_no,
            mobile_no,
            email HAVING count(company_id) > 1
   ORDER BY company_id) a
JOIN crm_customer_contacts b ON b.company_id != a.company_id
AND (a.ph_no = b.ph_no
     OR a.mobile_no = b.mobile_no
     OR a.email = b.email )
GROUP BY a.company_id
ORDER BY company_id

如果有多个重复,该怎么办?如果有多个重复,请分组\u concate?@AlmaDo当发生多个重复时,请重复公司id,与上面的结果表相同。402对410和411重复2次,因为402、410和411中的ph值相同
select A.company_id,B.company_id as duplicate_company_id
from company_table A, company_table B
where A.id != B.id
AND
A.company_id != B.company_id
AND
(
    A.ph_no = B.ph_no
    OR
    A.mobile_no = B.mobile_no
    OR
    A.email = B.email
)