0

我有两张桌子:

  • takes具有属性ID和的表Course_ID
  • course具有属性Course_IDtitle和的表dept_name

我想检索titledept_name在两个表上使用自然连接,但它返回错误:

';' 附近的语法不正确

我的代码:

select title, dept_name
from takes 
natural join course;

我的代码有什么问题?

PS。我的教科书没有提到使用on关键字。除此之外,它还提到使用运算符using来指定公共属性,但这也无济于事。

4

3 回答 3

1

Well 标准SQL支持一个名为 的概念natural join,它表示inner join基于列与same name两侧的匹配。例如, 根据双方同名列之间的匹配T1 NATURAL JOIN T2连接行之间的行。T-SQL 是 , 的方言,没有 a 的实现,截至. 因此,在您的情况下,并且有一个 common column ,等效表示形式将是:T1T2SQLnatural joinSQL Server 2012takescourseCourse_IDT-SQL

select C.title, C.dept_name
from takes T
INNER JOIN course C on C.Course_ID = T.Course_ID;
于 2014-10-14T06:05:10.530 回答
0

除此之外,它还提到使用运算符 using 来指定公共属性,但这也无济于事。

您要么误读了教科书,要么该教科书完全错误。natural join不需要任何关于使用哪一列的规范。

USING属性用于“常规”连接:

select c.title, c.dept_name
from takes t
  join course c using (Course_ID);

join相当于inner join。关键字inner是可选的。

join course using (Course_ID)相当于join course c on t.course_id = c.course_id

于 2014-10-14T06:01:50.447 回答
0

Sqlserver 不支持自然连接。取而代之的是,您可以使用

内部联接

select c.title, c.dept_name
from takes t
inner join course c on t.Course_ID = c.Course_ID;
于 2014-10-14T05:48:47.753 回答