1

我正在寻找一种方法来加入类似于 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.* 我希望返回的记录与相同的列重叠。我怎样才能做到这一点?

4

2 回答 2

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%'
于 2013-10-13T22:17:02.697 回答
1

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

select a.ID, a.directorID, b.name from MovieHasDirector a, Director b
where a.directorID = b.directorID
于 2013-10-13T22:16:22.253 回答