2016-05-17 25 views

回答

0

這是不是很有效,但它的工作:

SELECT * 
FROM mytable 
WHERE LEFT(email, LENGTH(email) - LOCATE('.', REVERSE(email))) IN 
(
    SELECT LEFT(email, LENGTH(email) - LOCATE('.', REVERSE(email))) AS common 
    FROM mytable 
    GROUP BY LEFT(email, LENGTH(email) - LOCATE('.', REVERSE(email))) 
    HAVING COUNT(*) > 1 
) 

Demo here

0

http://sqlfiddle.com/#!9/2a6fa/2

SELECT 
    u.email, 
    GROUP_CONCAT(c.email) clones 
FROM users u 
INNER JOIN users c 
ON u.id <> c.id 
    AND SUBSTRING(u.email,1,LENGTH(u.email)-LENGTH(SUBSTRING_INDEX(u.email,'.',-1))) 
     = SUBSTRING(c.email,1,LENGTH(c.email)-LENGTH(SUBSTRING_INDEX(c.email,'.',-1))) 
GROUP BY u.id 

該查詢返回太多的記錄,像.com = .net以及.net = .com

rec1 = [email protected] [email protected] 
rec2 = [email protected] [email protected] 

,但它可以解決通過添加:

WHERE u.email = "[email protected]" 

在需要時將返回特定電子郵件所有重複。

相關問題