删除 SQL 选择中的重复项
Posted
技术标签:
【中文标题】删除 SQL 选择中的重复项【英文标题】:Remove Duplicates in a SQL Select 【发布时间】:2021-06-28 00:55:35 【问题描述】:在 userid 和 contactid 之间有一个表联系人跟踪持续时间。
-
想要总结 uid 和 cid 之间所有联系的持续时间。
每个联系人 A&B、B&A 始终有 2 行。
从跟踪中选择 *
uid | cid | dura |
---|---|---|
A | B | 5min |
A | B | 1min |
B | A | 5min |
B | A | 1min |
B | C | 2min |
C | B | 2min |
按uid从跟踪组中选择uid、cid、sum(dura)作为total,按total desc选择cid order
uid | cid | total |
---|---|---|
A | B | 6min |
B | A | 6min |
B | C | 2min |
C | B | 2min |
想要的结果是
uid | cid | total |
---|---|---|
A | B | 6min |
B | C | 2min |
由于 A&B 之间的联系方式与 B&A 相同,因此我只想选择 1 个结果 A&B。 如何使用选择或子查询,谢谢。
【问题讨论】:
用您正在使用的数据库标记您的问题。 【参考方案1】:您似乎只是想过滤您的结果:
select uid, cid, sum(dura) as total
from tracking
where uid = 'A'
group by userid, contactid
order by by total desc;
注意:标准 SQL 没有SORT BY
子句(尽管有些数据库确实支持这一点)。标准是ORDER BY
。
编辑:
对于已编辑的问题,您似乎想要:
select uid, cid, sum(dura) as total
from tracking
group by userid < contactid
order by by total desc;
【讨论】:
抱歉,问题不够清楚,已编辑。 1.想要总结 uid 和 cid 之间所有联系的持续时间。 2. 每个联系人 A&B、B&A 总是有 2 行。由于 A&B 之间的联系方式与 B&A 相同,因此我只想选择 1 个结果 A&B。 @Tiketgcp 。 . .您看到修改后的查询了吗?以上是关于删除 SQL 选择中的重复项的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 SQL Server 中的某个列删除重复项? [复制]