0

我想知道在 FROM 子句中带有连接的查询和带有多个表的查询之间有什么区别。

例如:

SELECT *
FROM table1 NATURAL JOIN table2.

或者

SELECT *
FROM table1, table2
WHERE table1.field=table2.field.

太感谢了。

4

3 回答 3

1

NATURAL JOIN比较两个表的所有列并等于具有相同名称和相同类型的那些。

所以基本上,这两个 SQL 语句将执行相同的操作当且仅当table1table2只有一个具有相同名称和类型的列,并且该列是field.

于 2013-06-22T17:59:23.450 回答
0

SQL JOIN 子句用于根据它们之间的公共字段组合来自两个或多个表的行。

最常见的连接类型是:SQL INNER JOIN(简单连接)。SQL INNER JOIN 返回满足连接条件的多个表中的所有行。

你也可以用 WHERE 做,但用 JOIN 是合乎逻辑的。将 WHERE 用于特定条件。

于 2013-06-22T17:59:31.633 回答
0

通常没有任何区别,数据库将两者转换为相同的执行计划。

这两个区别是:

  • join 语法允许您进行外连接,
  • 连接语法允许您使用“自然”和“使用”,它们反过来将两个输入列合并为一个输出列(因此您的第一个查询将比第二个少一列)
于 2013-06-22T18:00:00.757 回答