Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
内部联接和select join SQL语句中的where之间的差异_Sql_Select_Join - Fatal编程技术网

内部联接和select join SQL语句中的where之间的差异

内部联接和select join SQL语句中的where之间的差异,sql,select,join,Sql,Select,Join,我有两条select join SQL语句: select a.id from table_a as a, table_b as b where a.id=b.id; select a.id from table_a as a inner join table_b as b on a.id=b.id; 显然,它们的结果是一样的。但是它们之间有什么区别吗,比如性能、可移植性 两者都是标准SQL。不同的数据库系统可能会对它们进行不同的优化,但因为它们非常简单,如果它们这样做,我会有点惊讶。但这就是

我有两条select join SQL语句:

select a.id from table_a as a, table_b as b where a.id=b.id;
select a.id from table_a as a inner join table_b as b on a.id=b.id;

显然,它们的结果是一样的。但是它们之间有什么区别吗,比如性能、可移植性

两者都是标准SQL。不同的数据库系统可能会对它们进行不同的优化,但因为它们非常简单,如果它们这样做,我会有点惊讶。但这就是SQL的本质:它是声明性的,这为实现如何执行查询提供了很大的余地。不能保证它们执行相同的操作,或者如果它们不同,则执行更快的操作。

一个区别是,第一个选项通过在where子句中表示连接条件来隐藏意图

第二个选项,即写入连接条件的位置,对于读取查询的用户来说更加清楚。它显示了查询的确切意图


就性能或任何其他差异而言,不应存在任何差异。这两个查询应该返回完全相同的结果,并在大多数RDBMS下执行相同的操作。

它们在SQL server中完全相同。没有性能差异。

内部连接语法是在20世纪90年代的某个时候添加到SQL中的。优化器可能(但不太可能)使用它比使用where子句作为连接条件的旧语法做得更好

它们都应该像现在一样具有高度的可移植性


内部联接语法更可取,因为读者更容易阅读,正如其他人所说。

您的问题不清楚您是否将SQL作为一种在许多数据库系统或SQL Server(Microsoft产品)中实现的语言。对于大多数DBRM,如MySQL、SQL Server、Oracle,db22您说过不能保证这些是相同的。你能举个例子吗?对不起,我的意思是“不能保证这些性能相同”,我已经修正了我的答案。