SQL如何通过一个字段选择重复项,而另一个字段则不同

时间:2016-10-11 19:50:05

标签: mysql sql

我的表格person_log包含以下字段:

  • id
  • timestamp
  • first_name
  • last_name
  • action

带有一些示例数据

1;012545878;homer;simpson;eating
2;812345222;homer;simpson;watching tv
3;312322578;marge;simpson;cooking
4;114568568;bart;simpson;skating
5;015345345;bart;simpson;skating

现在,我需要选择first_namelast_name相同且至少出现两次但action不同的所有记录集。

导致选择id s 1和2。

我该怎么做? TIA?

3 个答案:

答案 0 :(得分:1)

使用派生表来获取具有至少2个不同操作的人,并将其连接到原始表以获取结果中的其他列。

iframeOnload

答案 1 :(得分:1)

您可以按照您想要的字段进行分组,然后将数字大于或等于2作为要加入主person_log表的表格。

SELECT * FROM person_log p
JOIN (
SELECT first_name, last_name, action
group by first_name,last_name
having count(*) >=2 ) p2
on p.first_name=p2.first_name and p.last_name=p2.last_name

答案 2 :(得分:0)

你可以使用row_number(),分区可以让你按名字,姓氏和动作进行分组:

select distinct id 
from (select pl.*,
         row_number() over (partition by first_name, last_name, action) as seqnum
  from person_log pl
 ) R
where seqnum > 1;