加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 16:42:51 所属栏目:MsSql教程 来源:网络整理
导读:我试图在sqlite中使用自联接写一个简单的查询.我想要所有成本相同的产品ID,但我想要唯一的对(即不要列出相同的对,甚至不同的顺序). 这就是我所得到的: SELECT b1.Id,b2.IdFROM Basic AS b1LEFT JOIN Basic AS b2ON b1.cost = b2.costWHERE b1.Id != b2.IdAND
我试图在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读