mysql 表的多列交叉去重问题

       有这样一个表relation(f1, f2, c), 要去查询表中记录,并且将不同记录中f1 =  f2, f2 = f1, c = c的结果去重,比如(a, b, c), (b, a, c)只保留一条记录。

       答案参考下面:

              select * from relation where (f1, f2, c) not in (select a.f1, a.f2, a.c from relation as a inner join relation as b on a.f1 = b.f2 and a.f2 = b.f1 and a.c = b.c where a.f1 > a.f2);

       这里面没有考虑a.f1 = a.f2, 加上这个条件,只需增加distinct:

              select distinct * from relation where (f1, f2, c) not in (select a.f1, a.f2, a.c from relation as a inner join relation as b on a.f1 = b.f2 and a.f2 = b.f1 and a.c = b.c where a.f1 > a.f2);

转载于:https://my.oschina.net/landry17h/blog/32975

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值