删除左联接SQL Server中的重复项
我的最终结果是重复的。我尝试使用删除左联接SQL Server中的重复项,sql,sql-server-2008,join,left-join,Sql,Sql Server 2008,Join,Left Join,我的最终结果是重复的。我尝试使用Distinct以及groupby子句 Select distinct Orders.OrderNumber, Tracking.TrackingID, Orders.BalanceDue, Orders.Approved, Orders.Name, Orders.ShipCity , Orders.OrderDate, Orders.country, Orders.Shipping, Orders.CartId from
Distinct
以及groupby
子句
Select distinct
Orders.OrderNumber, Tracking.TrackingID,
Orders.BalanceDue, Orders.Approved, Orders.Name, Orders.ShipCity ,
Orders.OrderDate, Orders.country, Orders.Shipping, Orders.CartId
from
orders
left join
Tracking on Orders.OrderNumber = Tracking.ordernum
group by
Orders.OrderNumber, Orders.BalanceDue, Tracking.TrackingID,
Orders.Approved, Orders.Name, Orders.ShipCity,
Orders.OrderDate, Orders.country, Orders.Shipping, Orders.CartId
Orders表中有8166行,我只希望最终结果中有那么多列
!![在此处输入图像描述][3]
获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除跟踪id
:
Select o.OrderNumber, max(t.TrackingID) as TrackingId,
o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join
Tracking t
on o.OrderNumber = t.ordernum
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId;
获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除跟踪id
:
Select o.OrderNumber, max(t.TrackingID) as TrackingId,
o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join
Tracking t
on o.OrderNumber = t.ordernum
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId;
获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除跟踪id
:
Select o.OrderNumber, max(t.TrackingID) as TrackingId,
o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join
Tracking t
on o.OrderNumber = t.ordernum
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId;
获取一个跟踪id的一种方法是使用聚合函数并从
group by
子句中删除跟踪id
:
Select o.OrderNumber, max(t.TrackingID) as TrackingId,
o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId
from orders l left join
Tracking t
on o.OrderNumber = t.ordernum
group by o.OrderNumber, o.BalanceDue, o.Approved, o.Name, o.ShipCity,
o.OrderDate, o.country, o.Shipping, o.CartId;
您能给我们看一下这两个表中的一些行,以及您在最终结果中看到的“重复项”吗?
DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。你能给我们看一下这两个表中的一些行吗,以及你在最终结果中看到的“重复项”吗?DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。你能给我们看一下这两个表中的一些行吗,以及你在最终结果中看到的“重复项”吗?DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。你能给我们看一下这两个表中的一些行吗,以及你在最终结果中看到的“重复项”吗?DISTINCT
始终适用于结果的所有列-因此,如果其中一个列的值存在任何差异,则它不是重复的列。我会将列凿掉,直到看不到重复的列,然后从那里返回。但是,我很慢。