供参考的缘故的行为,我想指出的是,这取决于两个表是否不完全匹配。此代码显示了处理这些情况的不同方式。有更好的例子(我特别喜欢那些维恩图),但这些可能有助于目前的情况:
DECLARE @TableA TABLE (fname NVARCHAR(20), lname NVARCHAR(20), email NVARCHAR(30))
DECLARE @TableB TABLE (leavedate DATE, email NVARCHAR(30))
INSERT INTO @TableA (fname, lname, email) VALUES
('Jim','Halpert','[email protected]'),
('Pam','Beasley-Halpert','[email protected]'),
('Michael','Scott','[email protected]'),
('Toby','Flenderson','[email protected]')
INSERT INTO @TableB (leavedate, email) VALUES
('2010-05-04','[email protected]'),
('2008-03-14','[email protected]')
SELECT ta.*, tb.leavedate
FROM @TableA ta
LEFT JOIN @TableB tb
ON ta.email = tb.email
SELECT ta.fname, ta.lname, tb.email, tb.leavedate
FROM @TableA ta
RIGHT JOIN @TableB tb
ON ta.email = tb.email
SELECT ta.fname, ta.lname, COALESCE(ta.email,tb.email,''), tb.leavedate
FROM @TableA ta
FULL JOIN @TableB tb
ON ta.email = tb.email
这就是我需要:)非常感谢! –