如何在mysql中修剪这个表?

时间:2015-02-03 23:10:55

标签: mysql sql

我是一个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

它应该很简单,但我真的离不开,所以感谢你的帮助。

1 个答案:

答案 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。保留这些 - 只删除不匹配。