我是一个sql noob,不知道如何解释这个。所以这就是我想要实现的目标:
原始表
id node_id tag_id
-------------------------
1 10 3
2 10 4
3 10 1
4 11 7
5 11 8
修剪表:
id node_id tag_id
-------------------------
1 10 3
4 11 7
它应该很简单,但我真的离不开,所以感谢你的帮助。
答案 0 :(得分:1)
目前还不清楚您想要做什么,但以下内容会产生您指定的输出:
select min(id), node_id, min(tag_id)
from table t
group by node_id;
编辑:
如果要删除行,请使用join
:
delete o
from original_table ot left join
(select min(id) as id
from original_table
group by node_id
) tokeep
on ot.id = tokeep.id
where tokeep.id is null;
这使用left join
来匹配每个node_id
的最低ID。保留这些 - 只删除不匹配。