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()
我的分类和数字专栏的其余部分可以吗?@user9645175max()
基本上适用于所有数据类型。您的解决方案神奇地解决了我的问题!!万分感谢:)