MYSQL删除重复项并添加其Cnt的列
我有一个mysql表,有6列和数千行。我想添加另一个标题为count of reports的列。首先,应该知道此表中的某些行是相同的。它们不是完全重复的,而是具有相同精确值的单独实例。所以我想做的是将所有重复的行折叠成一行,并将这些重复行的计数加上“原始”添加到相邻的“报告计数”列中。因此,只有该行的任何行的相邻报告计数值均为1。我该怎么办呢。在这个查询中,我的表名是company,数据库是companys,六个初始列名是seller、one、two、three、four和types 下面的查询给出了整个表,包含六列和大约两千行MYSQL删除重复项并添加其Cnt的列,mysql,count,duplicates,Mysql,Count,Duplicates,我有一个mysql表,有6列和数千行。我想添加另一个标题为count of reports的列。首先,应该知道此表中的某些行是相同的。它们不是完全重复的,而是具有相同精确值的单独实例。所以我想做的是将所有重复的行折叠成一行,并将这些重复行的计数加上“原始”添加到相邻的“报告计数”列中。因此,只有该行的任何行的相邻报告计数值均为1。我该怎么办呢。在这个查询中,我的表名是company,数据库是companys,六个初始列名是seller、one、two、three、four和types 下面的查询
select seller, IFNULL(one,""), IFNULL(two,""), IFNULL(three,""),
IFNULL(four,""), types from companies.company
order by seller, one, two, three, four, types;
我应该添加什么/如何更改它以计算表中的重复行,删除它们,并将计数添加到相邻列?我想您只需要分组方式:
如果您确实想要修改该表,那么我建议您执行以下操作:
将上述结果选择到临时表中
截断原始表
添加计数列
将数据插入到表中
但是,我不相信您真的想更改源数据。是否缺少where子句?按select HAVING COUNT*>1Oh yes中的所有列分组。不应该有什么地方。道歉。我会删除。这可能有效,但我如何才能获得count*列?如。。。如何计算重复行的数量?我不能分组,因为这会将行折叠成我分组的任何参数,对吗?如。。如果我按卖家分组…只有三个卖家。这不会导致问题吗?基本问题是:对于count*列,如何实际获得要放入相邻列的重复行数?@Idontknow。你的问题明确地说,所以我想做的是将所有重复的行折叠成一行,并添加这些行的计数。这就是group by所做的。我假设你引用的是问题中指定的栏目,不管你的答案是否有效。我想出来了。你的回答很好,谢谢!
select seller, one, two, three, four, types, count(*)
from companies.company c
group by seller, one, two, three, four, types, count(*);