我有列的mysql表acc_records
id(pk),acc_no,acc_name,date_created
。
我必须显示来自该表的acc_no,acc_name数据,如果两个或多个ids(pks)
包含相同的acc_no
,或者两个或更多个ids(pks)
包含相同的acc_name
和date_created
并在结果中排除最新结果。
提前致谢。
答案 0 :(得分:1)
您需要通过子查询获取帐户名称,日期和最后一个ID,并将原始表格连接到子表格。需要对帐号进行相同的操作,并且需要获取不同的ID(两个子表中可能都有一些记录)。
实质上,这是您需要的查询。
select * from account_records ar inner join
(
select distinct id from
(
select ar.id as id from
account_records ar inner join
(
select count(*), max(id) as lastId, acc_name, date_created from account_records ar
group by acc_name, date_created
having count(*) > 2
) aggr
on ar.acc_name = aggr.acc_name
and ar.date_created = aggr.date_created
and ar.id < aggr.lastId
union
select id from account_records ar inner join
(
select count(*), max(id) as lastId, acc_no from account_records ar
group by acc_no
having count(*) > 2
) aggrId
on aggrId.acc_no = ar.acc_no
and ar.id < aggrId.lastId
) allIds
) distinctIds
on ar.id = distinctIds.id
;
这是sqlfiddle。