我正在尝试使用自联接在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;
Run Code Online (Sandbox Code Playgroud)
所以我得到了类似的东西
23 | 101
23 | 205
24 | 103
101 | 23 <-- Duplicate!
Run Code Online (Sandbox Code Playgroud)
我尝试了DISTINCT和GROUP BY的不同组合,但我仍然得到重复对:
我尝过类似的东西
SELECT DISTINCT bp1.Id,bp2.Id ......
&... = 5 GROUP BY bp1.Id,bp2.Id;
如何摆脱重复对?有任何想法吗?
我将非常感谢你的帮助!
Mar*_*ers 40
更改!=为<WHERE子句以确保始终首先出现最低ID:
WHERE b1.Id < b2.Id
Run Code Online (Sandbox Code Playgroud)