我正在尝试使用自联接在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