SQL Server等效于使用JOIN来避免重复列

时间:2013-10-13 22:04:54

标签: sql sql-server join

我正在寻找一种方法来加入类似于MySQL“使用”的PK上的关系表,以便我可以消除重复的列。

以下是一个例子:

select * 
from MovieHasDirector
join Director on MovieHasDirector.directorID = Director.directorID
where Director.name
like '%Steven Spiel%'

返回:

3818    976 976 Steven Spielberg
3962    976 976 Steven Spielberg
4317    976 976 Steven Spielberg
4715    976 976 Steven Spielberg

当我真正想要的是:

3818    976 Steven Spielberg
3962    976 Steven Spielberg
4317    976 Steven Spielberg
4715    976 Steven Spielberg

您可以看到重复的directorID列已消失。在MySQL中,您可以使用using(directorID)而不是ON directorID = directorID

来完成此操作

当然我试图这样做而不必手动指定Select MovieHasDirector.movi​​eID,Director。*我希望返回的记录与相同的列重叠。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

您无法在SQL Server中执行此操作,您必须指定要返回的列名称:

select MovieHasDirector.column1, MovieHasDirector.column2, Director.column1
from MovieHasDirector
join Director on MovieHasDirector.directorID = Director.directorID
where Director.name
like '%Steven Spiel%'

您可以使用表别名使其更容易:

select M.column1, M.column2, D.column1
from MovieHasDirector M
join Director D on M.directorID = D.directorID
where D.name
like '%Steven Spiel%'

答案 1 :(得分:1)

我认为最好的方法是手动选择所需的列。

select a.ID, a.directorID, b.name from MovieHasDirector a, Director b
where a.directorID = b.directorID