我们正在进行一个简单的分组查询,以便在插入到我们的数据库表中的下一组项目中找到重复的添加。
SET @old_set_id = 71, @new_set_id = 72;
SELECT id,
request_id,
data_capture_id as temp_id,
count(data_capture_id ) as item_count
FROM my_table
WHERE request_id= @old_set_id or request_id= @new_set_id
GROUP BY data_capture_id
会产生类似
的表格 id request_id temp_id item_count
----------------------------------------
3 71 2324345 1
4 71 6786867 2
8 72 5276345 1
对于所有重复项,我们需要组中第二项的id,即重复记录6786867的id为72?目前,它显示第一组的ID。
答案 0 :(得分:0)
尝试从此查询开始:
select
t1.id,
t1.record_col_1,
t2.request_id,
count(t1.data_capture_id) as item_count
from (
select id, request_id, data_capture_id, record_col_1
from my_table
order by request_id limit 123456789
) t1
inner join (
select request_id, record_col_1
from my_table
order by request_id limit 123456789
) t2 ON t2.record_col_1 = t1.record_col_1 and t2.request_id > t.request_id
group by t1.record_col_1
having item_count > 1
我们的第一个子查询确保在我们对数据进行分组之前,数据按request_id
排序。我们有这个垃圾limit 123456789
因为默认情况下MySQL忽略了子查询中的排序(除非我们使用这个hacky限制)。我们还有另一个带有排序数据的子查询,以便从具有相同request_id
的集合中获取更高的record_col_1
。最后,我们按record_col_1
折叠数据并仅过滤重复项。
我不确定,如果它可行,但请尝试一下。