无法运行自然连接

时间:2014-10-14 05:12:06

标签: sql sql-server natural-join

我有两张桌子:

  • 包含属性takesID
  • 的表格Course_ID
  • 包含courseCourse_IDtitle
  • 属性的表dept_name

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

  

';'

附近的语法不正确

我的代码:

select title, dept_name
from takes 
natural join course;

我的代码出了什么问题?

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

3 个答案:

答案 0 :(得分:1)

标准良好的SQL支持名为natural join的概念,该概念代表inner join,基于两边都有same name的列之间的匹配。例如, T1 NATURAL JOIN T2根据匹配项之间的行加入T1T2之间的行 两侧具有相同名称的列。 T-SQL是SQL的方言,从natural join开始,没有SQL Server 2012的实现。 因此,在您的情况下takescourse有一个共同的列Course_IDT-SQL中的等效表示将为:

select C.title, C.dept_name
from takes T
INNER JOIN course C on C.Course_ID = T.Course_ID;

答案 1 :(得分:0)

Sqlserver不支持自然连接。而不是你可以使用

  

INNER JOIN

select c.title, c.dept_name
from takes t
inner join course c on t.Course_ID = c.Course_ID;

答案 2 :(得分:0)

  

除此之外,它还提到使用运算符来指定公共属性,但这也没有帮助。

你要么误读了教科书,要么教科书是完全错误的。 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