sql – 在自联接中选择唯一的对

前端之家收集整理的这篇文章主要介绍了sql – 在自联接中选择唯一的对前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在sqlite中使用自联接写一个简单的查询.我想要所有成本相同的产品ID,但我想要唯一的对(即不要列出相同的对,甚至不同的顺序).
这就是我所得到的:
SELECT b1.Id,b2.Id
FROM Basic AS b1
LEFT JOIN Basic AS b2
ON b1.cost = b2.cost
WHERE b1.Id != b2.Id
AND b1.Cost = 5;
@H_404_5@所以我得到一些东西

23 | 101
23 | 205
24 | 103
101 | 23 <-- Duplicate!
@H_404_5@我尝试了DISTINCT和GROUP BY的不同组合,但是我仍然会得到重复的对:

@H_404_5@我已经尝试过类似的东西

@H_404_5@SELECT DISTINCT bp1.Id,bp2.Id …

@H_404_5@&安培;
… = 5
GROUP BY bp1.Id,bp2.Id;

@H_404_5@如何摆脱重复对?有任何想法吗?

@H_404_5@我会感谢你的帮助!

解决方法

更改!=到<在您的WHERE子句中,确保最低ID始终位于第一位:
WHERE b1.Id < b2.Id

猜你在找的MsSQL相关文章