我有一个业务表,每个业务最多可以有3个电话号码。我想查找任何重复的电话号码,但由于电话号码在不同的列中,我认为无法使经典的分组依据
查询工作。
示例数据:
在本例中,我希望将记录1、2和3标识为相同。简单地将电话号码555-551-5555标识为一个重复的号码就可以了,因为我可以做一个子查询,或者呼叫程序可以使用该电话号码并发送一个新的查询,获得3个电话列中任何一个列中的所有记录555-551-5555。
如果重要的话,这是在MariaDB上。
编辑,(添加我当前的flaying尝试,因为有人似乎真的想要它):
我现在有的是:
SELECT ID, phone_main, phone_mobile, phone_tollfree
(
SELECT COUNT(*) FROM businesses b
WHERE (
phone IS NOT NULL AND (b.phone_mobile=phone OR b.tollfree=phone )
)
OR (
phone_mobile IS NOT NULL AND (b.phone=phone_mobile OR b.phone_tollfree=phone_mobile)
)
OR (
phone_tollfree IS NOT NULL AND (b.phone=phone_tollfree OR b.phone_mobile=phone_tollfree)
)
) cnt
from business HAVING cnt > 1
这方面的问题:
例如:
SELECT DISTINCT x.*
FROM my_table x
JOIN my_table y
ON y.id <> x.id
AND
( y.phone_main IN(x.phone_main,x.phone_mobile,x.phone_tollfree)
OR y.phone_mobile IN(x.phone_main,x.phone_mobile,x.phone_tollfree)
OR y.phone_tollfree IN(x.phone_main,x.phone_mobile,x.phone_tollfree)
);