我错误地将重复项插入数据库。我建立了查询,该查询返回了我想保留的所有行ID。如何删除查询中未给出的行。您能在答案中包含完整的查询吗?
select min(matches.`id`)from matches
where (stream_match_time, track_match_time, user_id, track_id ) in (
select stream_match_time, track_match_time, user_id, track_id
from matches
group by stream_match_time, track_match_time, user_id, track_id
having count(*) > 1
)
group by stream_match_time, track_match_time, user_id, track_id
答案 0 :(得分:2)
您可以使用:
delete from matches where id not in (...)
但是您必须像这样将查询嵌套更深一层:
delete from matches
where id not in (
select id from (
select min(id) id from matches
where (stream_match_time, track_match_time, juked_user_id, track_id ) in (
select stream_match_time, track_match_time, juked_user_id, track_id
from matches
group by stream_match_time, track_match_time, juked_user_id, track_id
having count(*) > 1
)
group by stream_match_time, track_match_time, juked_user_id, track_id
) t
)
我认为您的查询不需要2级汇总,因此请尝试以下操作:
delete from matches
where id not in (
select id from (
select min(id) id
from matches
group by stream_match_time, track_match_time, juked_user_id, track_id
having count(*) > 1
) t
)