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;

所以我得到一些东西

23 | 101
23 | 205
24 | 103
101 | 23 <-- Duplicate!

我尝试了DISTINCT和GROUP BY的不同组合,但是我仍然会得到重复的对:

我已经尝试过类似的东西

SELECT DISTINCT bp1.Id,bp2.Id …

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

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

我会感谢你的帮助!

解决方法

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

猜你在找的MsSQL相关文章