所以我试图清理数据库表中的一些电话记录。
我发现了如何使用以下方法在 2 个字段中查找完全匹配项:
/* DUPLICATE first & last names */
SELECT
`First Name`,
`Last Name`,
COUNT(*) c
FROM phone.contacts
GROUP BY
`Last Name`,
`First Name`
HAVING c > 1;
哇,太好了。
我想进一步扩展它以查看众多字段,以查看 3 个电话字段中的 1 个中的电话号码是否重复。
所以我想检查 3 个字段(general mobile
, general phone
, business phone
)。
1.查看它们是否不为空('') 2.查看其中任何一个中的数据(数字)是否出现在表中的其他 2 个电话字段中。
因此,将我有限的 SQL 推到了极限,我想出了以下内容,它似乎返回了带有 3 个空电话字段的记录以及没有重复电话号码的记录。
/* 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;
显然我的逻辑是有缺陷的&我想知道是否有人能指出我正确的方向/同情等等......
非常感谢