UPDATE: I removed my previous answer because it is no longer relevant
Ah okay, this should do it. Note that I'm using Microsoft SQL Server table variables for this complete example, just change the select statement to use "Emails" & "Attachements" instead of "@Emails" & "@Attachements" for your tables.
DECLARE @Emails TABLE
(
[UID] INT,
[Column1] VARCHAR(20),
[Column2] VARCHAR(20),
[Column3] VARCHAR(20),
[Column4] VARCHAR(20),
[Column5] VARCHAR(20)
)
DECLARE @Attachements TABLE
(
[UID] INT,
[ReferenceID] INT
)
INSERT INTO @Emails ([UID], Column1, Column2, Column3, Column4, Column5) SELECT 1, 'Data 1', 'Data 2', 'Data 3', 'Data 4', 'Data 5'
INSERT INTO @Emails ([UID], Column1, Column2, Column3, Column4, Column5) SELECT 2, 'Data 6', 'Data 7', 'Data 8', 'Data 9', 'Data 10'
INSERT INTO @Emails ([UID], Column1, Column2, Column3, Column4, Column5) SELECT 3, 'Data 11', 'Data 12', 'Data 13', 'Data 14', 'Data 15'
INSERT INTO @Emails ([UID], Column1, Column2, Column3, Column4, Column5) SELECT 4, 'Data 16', 'Data 17', 'Data 18', 'Data 19', 'Data 20'
INSERT INTO @Attachements ([UID], [ReferenceID]) SELECT 1, 2
INSERT INTO @Attachements ([UID], [ReferenceID]) SELECT 2, 2
INSERT INTO @Attachements ([UID], [ReferenceID]) SELECT 3, 1
INSERT INTO @Attachements ([UID], [ReferenceID]) SELECT 4, 3
-- And here's the select!
SELECT e.UID, e.Column1, e.Column2, e.Column3, e.Column4, e.Column5
FROM @Emails e
WHERE EXISTS
(SELECT 1 FROM @Attachements a WHERE a.ReferenceID = e.UID)
You could also do a DISTINCT with an inner JOIN, though I prefer the style above personally. I'm not sure which is more efficient.
SELECT DISTINCT e.UID, e.Column1, e.Column2, e.Column3, e.Column4, e.Column5
FROM @Emails e
INNER JOIN @Attachements a ON a.ReferenceID = e.UID
P.S. If the table names are in English, it's "Attachments" not "Attachements". If it's in another language, then ignore me! :)