Quindi sto provando a pulire alcuni record telefonici in una tabella di database.Il database di deduplicazione registra i valori confrontati in numerosi campi
ho trovato il modo di trovare corrispondenze esatte in 2 campi utilizzando:
/* DUPLICATE first & last names */
SELECT
`First Name`,
`Last Name`,
COUNT(*) c
FROM phone.contacts
GROUP BY
`Last Name`,
`First Name`
HAVING c > 1;
Wow, grande.
Desidero espandere ulteriormente per esaminare numerosi campi per vedere se un numero di telefono in 1 dei 3 campi del telefono è un duplicato.
Quindi voglio controllare 3 campi (general mobile
, general phone
, business phone
).
1.per vedere che non sono vuoti ('') 2. per vedere se i dati (numero) in uno di essi appaiono negli altri 2 campi del telefono in qualsiasi punto della tabella.
Quindi, spingendo il mio SQL limitato oltre il limite, ho trovato il seguente che sembra restituire record con 3 campi di telefono vuoti & anche i record che non hanno numeri di telefono duplicati.
/* DUPLICATE general & business phone nos */
SELECT
id,
`first name`,
`last name`,
`general mobile`,
`general phone`,
`general email`,
`business phone`,
COUNT(CASE WHEN `general mobile` <> '' THEN 1 ELSE NULL END) as gen_mob,
COUNT(CASE WHEN `general phone` <> '' THEN 1 ELSE NULL END) as gen_phone,
COUNT(CASE WHEN `business phone` <> '' THEN 1 ELSE NULL END) as bus_phone
FROM phone.contacts
GROUP BY
`general mobile`,
`general phone`,
`business phone`
HAVING gen_mob > 1 OR gen_phone > 1 OR bus_phone > 1;
Chiaramente la mia logica è viziata & mi chiedevo se qualcuno mi potrebbe punto nella giusta direzione/pietà ecc ...
Molte grazie
tag prega che DBMS si utilizza –