删除重复记录,将其与另一列中的最大值进行比较 - mysql

时间:2017-03-22 11:41:43

标签: mysql sql

id  | rem_id |max_val
--  | ------ |------
1   | 1      | 7
2   | 2      | 6
3   | 3      | 1
4   | 1      | 1
5   | 2      | 1
6   | 3      | 1

在上表中,我需要使用max_val列中的min val从rem_id列中删除重复项

id  | rem_id |max_val
--  | ------ |------
1   | 1      | 7
2   | 2      | 6
3   | 3      | 1

1 个答案:

答案 0 :(得分:1)

这将删除每个max_val的最高价值rem_id以及max_val的倍数,删除id更高的delete t from t left join t as i on i.rem_id = t.rem_id and (i.max_val > t.max_val or (i.max_val = t.max_val and i.id < t.id) ) where i.id is not null;

+----+--------+---------+
| id | rem_id | max_val |
+----+--------+---------+
|  1 |      1 |       7 |
|  2 |      2 |       6 |
|  3 |      3 |       1 |
+----+--------+---------+

rextester演示:http://rextester.com/QKIK17666

返回:

  <meta name="viewport" content="width=device-width, initial-scale=1">