所以我正在尝试清理数据库表中的一些电话记录.
我已经找到了如何使用以下方法在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个字段(普通手机,普通电话,商务电话).
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;
显然,我的逻辑是有缺陷的.我想知道是否有人可以指出我正确的方向/怜惜等…
非常感谢