SQL Server 相当于使用 JOIN 避免重复列
Posted
技术标签:
【中文标题】SQL Server 相当于使用 JOIN 避免重复列【英文标题】:SQL Server equivalent to Using for a JOIN to avoid duplicate columns 【发布时间】:2013-10-13 22:04:53 【问题描述】:我正在寻找一种在类似于 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.movieID, Director。* 我希望返回的记录与相同的列重叠。我该怎么做?
【问题讨论】:
所以 MySQL 使得在生产代码中使用select *
变得更容易,而 SQL Server 让它变得更难,which is a good thing。
我有the same problem。你可能想看看this solution。
【参考方案1】:
您不能在 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%'
【讨论】:
【参考方案2】:我认为最好的方法是手动选择您需要的列。
select a.ID, a.directorID, b.name from MovieHasDirector a, Director b
where a.directorID = b.directorID
【讨论】:
以上是关于SQL Server 相当于使用 JOIN 避免重复列的主要内容,如果未能解决你的问题,请参考以下文章
sql server join ,inner join ,left join ,right join 的使用