我正在考虑 Oracle 的 SQL 实现中内部连接的语法,这似乎有点不一致:
假设您有两个关系贷款(loan_number,branch_name,amount)和借款人(customer_name,loan_number)。loan_number 是两个表共有的属性。现在,Oracle 为您提供了两种表达内部联接的方法:
select *
from loan, borrower
where loan.loan_number = borrower.loan_number;
上面的语句等价于:
select *
from loan
inner join borrower
on loan.loan_number = borrower.loan_number;
但是,在表达交叉连接时,只有一种表达方式:
select *
from loan, borrower;
以下语句在语法上不正确:
select *
from loan
inner join borrower;
这是无效的;Oracle 期望子句的 ON... 部分
既然内连接只是一个带有过滤条件的交叉连接,你们认为这是Oracle SQL 实现的不一致吗?我错过了什么吗?我很想听听其他意见。谢谢。
正如大卫在他的回答中指出的那样,语法是:
select *
from loan cross join borrower;
即使我不知道上述语法,我仍然认为它不一致。除了允许没有连接条件的内部连接之外,还可以使用交叉连接关键字。交叉连接实际上是没有连接条件的内连接,为什么不将其表示为没有连接条件的内连接呢?