私は45の列を持つテーブルを持っています。列SrNo
はprimary key
です。それは何百万という記録を持っています。それは非常に多くの重複を含んでいます。私は実際に一意の値を見つけて、別のテーブルに挿入したいと思っています。列First-Middle-Last Name
、Emails
(オフィス、個人)、MobileNumbers
には非常に多くの重複が含まれています。私は以下のクエリを使用して一意の値を見つけようとしていますが、依然として重複の結果を示しています。誰かが私を助けてくれるのですか?MySQLのテーブルの複数の列から一意のレコードを見つける方法
SELECT ft.first_name
, ft.middle_name
, ft.last_name
, ft.designation
, ft.company_name
, ft.email_office
, ft.email_personal1
, ft.email_personal2
, ft.personal_mobile1
, ft.personal_mobile2
FROM mytable ft
JOIN
(SELECT First_Name
, Middle_Name
, Last_Name
, designation
, Company_Name
, Email_Office
, Email_Personal1
, Email_Personal2
, Personal_Mobile1
, Personal_Mobile2
, COUNT(*)
FROM mytable
GROUP
BY First_Name
, Middle_Name
, Last_Name
, designation
, Company_Name
, Email_Office
, Email_Personal1
, Email_Personal2
, Personal_Mobile1
, Personal_Mobile2
HAVING COUNT(*) = 1
) temp
ON temp.first_name = ft.First_Name
AND temp.middle_name = ft.Middle_Name
AND temp.last_name = ft.Last_Name
AND temp.designation = ft.Designation
AND temp.company_name = ft.Company_Name
AND temp.email_office = ft.Email_Office
AND temp.email_personal1 = ft.Email_Personal1
AND temp.email_personal2 = ft.Email_Personal2
AND temp.personal_mobile1 = ft.Personal_Mobile1
AND temp.personal_mobile2 = ft.Personal_Mobile2
WHERE srno <= 1000;
これは数百万ものため、fulldataのクエリを実行するのに時間がかかります。ザッツ私はEmails
で重複を示す1000
その、あまりにもNames
の3列件までレコードを表示するwhere
条件を入れてきた理由。誰もこのクエリで何が間違って助けることができますか?または私はそれをこのように複雑にしていますか?
また、count(*) > 1
のレコードを取得するには、他の重複を無視しながらレコードを1つだけ取るにはどうすればよいですか?
以下は私のサンプル表です。
+-----------+------------+----------+-------------------+-------------+----------------+-----------------+---------------------+------------+------------+
| FirstName | MiddleName | LastName | Designation | CompanyName | Email(o) | Email(P1) | Email(P2) | Mobile(pl) | Mobile(p2) |
+-----------+------------+----------+-------------------+-------------+----------------+-----------------+---------------------+------------+------------+
| Anil | | | Personnel Manager | ABC | anilgabc.com | anilggmail.com | | 9898989898 | |
| Anil | D | Gupta | Personnel Manager | ABC | anilggmail.com | | | | |
| Anil | D | | | ABC | [email protected] | | | | |
| Anil | | Gupta | Personnel Manager | | | | anilgreditfmail.com | 9898989898 | |
| Anil | | Gupta | | ABC | | | | 9898989898 | |
| Anil | D | Gupta | Personnel Manager | ABC | anilgabc.com | [email protected] | anilgrediffmail.com | 9898989898 | |
+-----------+------------+----------+-------------------+-------------+----------------+-----------------+---------------------+------------+------------+
そして、ここではあなたが必要とする同じレコードが最初に、他のテーブルを結合する複数持つテーブルのための明確な目的の結果...
名前またはミドルネームまたは姓または電子メール。またはFirst + last + Middlle + emailの固有の組み合わせ –
私は一意のレコード(行)全体がこれらすべてのフィールドの組み合わせを意味します。 –