[英]Remove duplicates from the below SQL query
id component price manufactured
1 fx card 500 2011
2 ram 400 2010
3 case 400 2010
4 smps 500 2011
5 cord 200 2010
6 usb 200 2010
预期产量(以相同价格和制造年份作为不同组合的退货组件):
component component price manufactured
smps fx card 500 2011
case ram 400 2010
cord usb 200 2010
SELECT m1.[component]
,m2.[component]
,m1.[price]
,m1.[manufactured]
FROM [dbo].[Mfg] m1
inner join [dbo].[Mfg] m2
on m1.component != m2.component
and m1.price = m2.price
and m1.manufactured = m2.manufactured
以上查询的结果(尽管输出错误):
component component price manufactured
smps fx card 500 2011
case ram 400 2010
cord usb 200 2010
ram case 400 2010
fx card smps 500 2011
usb cord 200 2010
请帮助我消除使用查询的重复组合。
如果没有成对的组件共享相同的名称,则此方法有效:
SELECT m1.[component]
,m2.[component]
,m1.[price]
,m1.[manufactured]
FROM [dbo].[Mfg] m1
JOIN [dbo].[Mfg] m2 ON m1.component > m2.component
AND m1.price = m2.price
AND m1.manufactured = m2.manufactured;
我所做的只是将不等式运算符!=
换成greater than
运算符。 这样,您每对都可以得到一次,而不是两次。
为了提供相同名称的可能性:
JOIN [dbo].[Mfg] m2 ON m1.id > m2.id
AND m1.price = m2.price
AND m1.manufactured = m2.manufactured;
我认为id
是唯一的,所以不会出错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.