【发布时间】:2014-07-05 12:18:12
【问题描述】:
我在SQL、TSQL、SSIS、ETL 有大约 6 个月的新手经验。当我发现自己在实习项目中越来越多地使用JOIN 语句时,我一直在尝试不同的JOIN 语句。我想确认我的发现。以下关于JOIN 陈述在SQL Server 中的结论是否准确?:
1)我做了一个LEFT OUTER JOIN 查询并使用JOIN 做了同样的查询,得到了同样的结果;所有JOIN 语句LEFT OUTER 都在SQL Server 中关联吗?
2)我做了一个LEFT OUTER JOINWHERE第二个表PK(加入)IS NOT NULL并使用INNER JOIN进行了相同的查询,产生了相同的结果;可以肯定地说INNER JOIN 语句只会产生匹配的记录吗?并且与LEFT OUTER JOIN 相同,其中加入记录IS NOT NULL?
我问的原因是因为我一直只使用LEFT OUTER JOINS,因为那是我喜欢的。但是,我想在编写查询时尽可能多地消除代码以提高效率。我只是想确保我的观察是正确的。
此外,您是否可以提供任何提示来轻松找出适合特定查询的 JOIN 语句?例如,如果您想产生不匹配的记录,您会使用什么JOIN?
谢谢。
【问题讨论】:
-
我认为this answer 或this answer(针对同一个问题)将解释您需要了解的有关不同类型的 JOIN 的所有信息。如果你想让你的代码不那么冗长,
LEFT OUTER JOIN是LEFT JOIN的同义词(LEFT INNER JOIN没有意义),INNER JOIN是JOIN的同义词 -
或this answer 和this answer(也针对同一个问题)。如果您的 LEFT OUTER JOIN 和 INNER JOIN 产生相同的结果,那是偶然的,并且您的联接表中没有丢失任何结果。
-
哈哈。看到有人 +1 我很久以前问过的这个问题。回想起来,我在 SQL 方面已经非常先进了,现在我不得不笑了。
标签: sql sql-server join