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.movi​​eID, 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 的使用

SQL Server Join方式

使用 JOIN 进行 SQL Server 分页 - 列名“id”不明确

SQL Server中JOIN的使用方法总结

sql去重问题怎样去不掉重复的呢?

SQL Server APPLY AND JOIN 关键字指南