2013-10-13 63 views
1

我正在尋找一種方法來加入關於類似於MySQL的「使用」PK的關係表,以便我可以消除重複的列。SQL Server等效於使用JOIN來避免重複的列

下面是一個例子:

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。*我想要返回的記錄重疊相同的列。我怎樣才能做到這一點?

+1

因此,MySQL使得在生產代碼中使用'select *'更容易,而SQL Server使它更難,[這是一件好事](http://stackoverflow.com/a/3180435/11683)。 – GSerg

+0

我有[同樣的問題](http://stackoverflow.com/questions/32481055/alternatives-to-using-in-a-join-for-sql-server-for-avoiding-duplicated-columns-i)。你可能想看看[這個解決方案](http://stackoverflow.com/a/32482404/2436175)。 – Antonio

回答

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

我認爲最好的辦法是手動選擇你需要的列。

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