使用MySQL Group查询组中第二项的ID按查询

时间:2018-03-22 05:38:46

标签: mysql group-by

我们正在进行一个简单的分组查询,以便在插入到我们的数据库表中的下一组项目中找到重复的添加。

    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。

1 个答案:

答案 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折叠数据并仅过滤重复项。

我不确定,如果它可行,但请尝试一下。

相关问题