第一个选项:
SELECT Table1.* ,Table2.Price AS Price
FROM
Table1,Table2
WHERE
Table1.ID = Table2.ID
第二个选项:
SELECT Table1.* ,Table2.Price AS Price
FROM
Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID
哪一个更好,更有效?
答案 0 :(得分:3)
它可能会给你相同的结果,但第二个选项更好,因为它遵循最新标准,并正确定义什么是连接和什么可能是where子句。在性能方面,上述两个陈述应该相同。
答案 1 :(得分:3)
第二种方式做同样的事情,只有ANSI(美国国家标准协会标准化结构化查询语言)SQL,一种标准形式的SQL。进一步研究它的优缺点。
http://it.toolbox.com/blogs/oracle-experience/a-case-for-ansi-sql-15647
答案 2 :(得分:1)
它们都是joins,第一个是使用隐式语法,第二个是使用显式语法。
答案 3 :(得分:0)
此外,它应该包含在任何体面的SQL书中(我已经从O'Reilly口袋参考中了解了这个问题)。此外,我仍然想知道人们在哪里得到旧的语法示例,也许我只是从好的来源学习SQL。此外,虽然人们重申这两个变体生成具有相同性能的相同查询,但我仍然更倾向于怀疑当谈话不是关于某些DBMS特别声明在其文档中,特别是当谈论是关于DBMS时。
答案 4 :(得分:0)
第一个查询连接样式使用古老的连接语法,而第二个样式更新。在大多数情况下,它们会产生完全相同的查询执行计划。但是,当使用LEFT AND RIGHT OUTER JOINS时,您可以有问题,请参阅此答案和评论:
ANSI joins versus "where clause" joins
来自SQL Server BOL(2000)“在早期 Microsoft®SQLServer™的版本 2000左右外连接 条件在WHERE中指定 使用
*=
和=*
的子句 运营商。在某些情况下,这种语法 导致一个模糊的查询,可以 不止一种解释。