我有两张桌子:
takes
和ID
Course_ID
course
,Course_ID
和title
dept_name
我想在两个表上使用自然连接检索title
和dept_name
,但它会返回错误:
';'
附近的语法不正确
我的代码:
select title, dept_name
from takes
natural join course;
我的代码出了什么问题?
PS。我的教科书没有提到使用on
关键字。除此之外,它还提到使用运算符using
来指定公共属性,但这也没有帮助。
答案 0 :(得分:1)
标准良好的SQL
支持名为natural join
的概念,该概念代表inner
join
,基于两边都有same name
的列之间的匹配。例如,
T1 NATURAL JOIN T2
根据匹配项之间的行加入T1
和T2
之间的行
两侧具有相同名称的列。
T-SQL是SQL
的方言,从natural join
开始,没有SQL Server 2012
的实现。
因此,在您的情况下takes
和course
有一个共同的列Course_ID
,T-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