如果重复,加入表获取第一个表上的第一个数据

Posted

技术标签:

【中文标题】如果重复,加入表获取第一个表上的第一个数据【英文标题】:Joining table get the first data on first table if duplicate 【发布时间】:2020-05-06 03:17:27 【问题描述】:

嗨,我有 table1table2table1 是员工的日志时间表,table2 是员工的组码。 在table1,一些员工有重复的时间,因为他们多次重复时间只是为了确保他们的时间。

表1

ID  EMPID       Time_IN
1   001     7:01 AM
2   004     7:04 AM
3   034     7:10 AM
4   034     7:11 AM
5   019     7:11 AM
6   019     7:12 AM

表2

ID  empID   GroupName
1   001     AA
2   004     AB
3   034     AA
4   019     AA

结果

GroupName   CNT
AA          5
AB          1

预期结果

GroupName   CNT
AA          3
AB          1

当前查询

Select b.GroupName, count(*) as cnt
from table1 a
inner join table2 b
on a.EMPID = b.empID    
Group by  b.GroupName

我怎样才能达到上述预期的结果?

提前谢谢你。

【问题讨论】:

【参考方案1】:

你可以使用distinct count如下:

select t2.groupname, count(distinct empid) as cnt
from table1 t1 join table2 t2
on t1.empid = t2.empid
group by t2.groupname

【讨论】:

【参考方案2】:

join 对于您提出的问题是多余的:

select t2.GroupName, count(*) as cnt
from table2 t2
group by t2.GroupName;

这比joining 和使用count(distinct) 更有效。您可能真的有一个不同的问题,应该作为问题提出。

【讨论】:

以上是关于如果重复,加入表获取第一个表上的第一个数据的主要内容,如果未能解决你的问题,请参考以下文章

python 两个链表的第一个公共结点

您如何连接来自其他表或我的第 5 个表上的用户输入的数据?

尽可能快地获取我的 MySQL 的第一行(也在大表上)

两个链表的第一个公共节点

获取两个表的差异以及重复记录并存储在 Azure SQL DB 的第三个表中

MySQL:从另一个表中的值“修补”表上的现有数据