Non so se ho capito bene...
partendo dall'esempio di tabella e dai risultati voluti,questa:
codice:
SELECT *
FROM `Email`
GROUP BY email, U.id
HAVING count( E.ID ) >1
restiuisce 1 record con U.id= 1
quindi selezioni tutti i record di Email (subquery):
codice:
SELECT *
FROM `Email`
WHERE U.id
IN (
SELECT U.id
FROM `Email`
GROUP BY email, U.id
HAVING count( E.ID ) >1
)
ma ti restituisce anche il record con email=giuseppe@mail.it. usa distinct su C.ID o prova così
codice:
SELECT *
FROM `Email`
WHERE concat( U.id, email )
IN (
SELECT concat( U.id, email )
FROM `Email`
GROUP BY email, U.id
HAVING count( E.id ) >1
)
p.s. prestazioni da valutare, ma se ci sono gli indici, se i record non sono molti e se è una query di controllo da fare ogni tanto...
p.s.s. sostituisci i vari U.id, e.id etc
p.s.s.s. non testate, spero di non aver scritto vaccate