Mysql 删除表中的空重复项

Mysql 删除表中的空重复项,mysql,sql,Mysql,Sql,我的表如下所示: rank cost segment description 1 23 pen 2mm red pen 2 22 pen 3mm red pen 3 10 pen 4mm green pen 3 pen 4 pen 5mm

我的
如下所示:

rank   cost    segment      description
 1       23      pen         2mm red pen
 2       22      pen         3mm red pen
 3       10      pen         4mm green pen
 3               pen                       
 4               pen         5mm red pen
 5               pen         1 mm yellow pen
 1       3      eraser       red eraser
 2       2      eraser       red eraser
 3       5      eraser       green eraser
 4              eraser
 4       6      eraser       red eraser
 5              eraser       yellow eraser
需要转换为:

 rank   cost    segment         description
     1       23      pen         2mm red pen
     2       22      pen         3mm red pen
     3       10      pen         4mm green pen
     4               pen         5mm red pen
     5               pen         1 mm yellow pen
     1       3      eraser        red eraser       
     2       2      eraser        red eraser
     3       5      eraser        green eraser
     4       6      eraser        red eraser
     5              eraser        yellow eraser
注意
:删除段
中的空
等级3
和段
橡皮擦
中的
等级4

我一直在尝试使用
select*从表where cost中实现这一点=0
但在本例中,排名5的
也会被删除,因为它是空的。这是不可取的

我想保留所有列组,即使每个段中的列组为空,只想删除具有空
成本
值的段中的重复列组

我尝试了其他几种方法来实现这一点,但失败了。有没有更好的方法来实现这一点?我可能需要使用
按段分组
或任何
重复
关键字(如果有)

为这样一个新手问题道歉


我们将非常感谢您的帮助

聚合似乎可以满足您的需求:

select rank, sum(cost) as cost, segment, max(description)
from t
group by rank, segment;

这会在数据中为每个
/
组合返回一行。

如果表中有多个数字列和分类列,我是否会在
选择
语句中提及所有列的名称,并将聚合函数放在除
之外的每列上?@user9645175. . . 对这是一个可行的方法,特别是当你只使用两个副本时。非常感谢你的帮助。我会把这个应用到我的真实桌子上。然后将你的答案标记为正确!:)但是我想知道在其余的列上放什么聚合函数
max()
我的分类和数字专栏的其余部分可以吗?@user9645175
max()
基本上适用于所有数据类型。您的解决方案神奇地解决了我的问题!!万分感谢:)