更新:我刪除了我以前的答案,因爲它不再是相關
沒關係啊,這應該這樣做。請注意,對於此完整示例,我正在使用Microsoft SQL Server表變量,只需將select語句更改爲使用「電子郵件」&「Attachements」而不是「@Emails」&「@Attachements」即可。
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)
你也可以用一個內部JOIN做一個DISTINCT,儘管我更喜歡上面的個人風格。我不確定哪個更有效。
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.如果表格名稱是英文的,則是「附件」而不是「附件」。如果是用另一種語言,那就不要理我! :)
我不好,我說不清楚。 該死的,我寫了它反之亦然。這些列包含父表(EMAILS),而不是附件。 – Snake 2010-02-10 10:10:57