2

第二个查询是第一个查询的缩写形式吗?第二个是在做类似隐式 JOIN 的事情吗?他们都返回相同的结果......所以我想知道哪个更好用。使用 SQL Server 2008。感谢您的回答。

第一次查询

SELECT b.columnOne, a.columnTwo
FROM tableA As a JOIN tableB As b ON a.id = b.id 

第二次查询

SELECT b.columnOne, a.columnTwo 
FROM tableA As a, tableB as b
WHERE a.id = b.id
4

4 回答 4

4

它们是相同的。第二个使用 ANSI 标准连接,而第一个是。

许多(尽管不是全部)开发人员更喜欢第一个版本(ANSI 标准),因为它将JOIN逻辑保存在一个地方。它允许将过滤器逻辑保留在WHERE子句中。

于 2012-04-05T13:04:32.807 回答
1

第一个查询是正确的。
第二个查询的执行计划被“翻译”为第一个,因为引擎知道您正在连接表,所以在这种情况下它们是相同的
无论如何,当您使用涉及多个相关表的查询时,您应该始终使用JOIN语法(因为它是为此而生的)并避免WHERE:使用后者,如果引擎无法转换为JOIN语法,您可能会创建大量查询,因为您相乘每个表中的记录数(称为笛卡尔积)。

于 2012-04-05T13:04:01.573 回答
0

在我看来,单独指定连接(第一种形式)更清晰。然后您可以在 WHERE 子句中添加您的搜索条件。但是是的,这两种形式是等价的。

于 2012-04-05T13:05:31.830 回答
0

两个查询都将返回相同的结果,

看看关于 MS SQL 连接的文章 - http://www.codeproject.com/Articles/102805/SQL-Joins

第一个查询是正确的,我们可以使用连接对条件应用更多过滤器 - 左外连接、右外连接、完全外连接等

于 2012-04-05T13:05:33.087 回答