Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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
Sql 除了内部连接,还有其他选择吗_Sql_Oracle - Fatal编程技术网

Sql 除了内部连接,还有其他选择吗

Sql 除了内部连接,还有其他选择吗,sql,oracle,Sql,Oracle,这两种代码之间有什么不同吗 select a.firstname, a.lastname, b.salary, b.designation from table a, table b where a.id = b.id 及 在功能上,不,这些特定查询是相同的。第二种是使用ANSI连接语法,这是自SQL-92以来的标准,在Oracle中可用。尽管这两种方法仍然有效,但在处理外部联接时,仍需要使用ANSI语法 新样式通常更受欢迎,部分原因是旧样式

这两种代码之间有什么不同吗

select a.firstname,
       a.lastname,
       b.salary,
       b.designation
from table a,
     table b
where a.id = b.id


在功能上,不,这些特定查询是相同的。第二种是使用ANSI连接语法,这是自SQL-92以来的标准,在Oracle中可用。尽管这两种方法仍然有效,但在处理外部联接时,仍需要使用ANSI语法

新样式通常更受欢迎,部分原因是旧样式通过省略连接条件(不能使用
join
语法)使偶然引入笛卡尔积成为可能(偶然;如果您确实想故意这样做,您仍然可以执行
交叉连接
)而且它可以让您的加入/筛选意图更加清晰。许多人觉得它更容易阅读,但这是一个意见的问题,所以这方面是离题的

,至少对于外部联接。您可以从计划和跟踪中看到,Oracle实际上仍然在内部将ANSI语法转换为其旧格式,因此只要您的查询是正确的(即没有丢失的条件),那么就没有性能差异;而且优化者仍然可以选择使用基于
where
子句的索引,而不仅仅是
on
子句


如果您是Oracle新手,这里的许多人建议您从一开始就使用ANSI语法。当然,并非所有人都同意;例如,这里提到了一个不同的声音。

不,这是正确的。。你还没有看下面的答案。@radha-为什么你不认为它是正确的;你觉得这行不通,还是你不喜欢这种风格?
select a.firstname,
       a.lastname,
       b.salary,
       b.designation
from table a inner join table b on a.id = b.id