Mysql的查询重复数据

liubeck 2012-07-03 02:31:19
现在数据库有个字段为重复的次数Num,可能为1,2,3.....。
现在我想查询,把重复记录都显示出来,即查询每条记录,根据后面的重复次数,都重复输出出来。
该如何写sel语句。

请高手赐教。
...全文
461 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubeck 2012-07-04
  • 打赏
  • 举报
回复
算了,自己解决了,最后才存储过程中,使用游标给解决了
liubeck 2012-07-03
  • 打赏
  • 举报
回复
其实我在存储过程就是算session个数,然后再根据session个数,以及ClientIP, ServerIP,ClientPort,ServerPort,再在源表中查询session的具体信息。
liubeck 2012-07-03
  • 打赏
  • 举报
回复
源表建表就不用贴了吧,我把我的存储过程贴出来一部分吧。


set @j=concat('
create temporary table if not exists test
(ClientIP varchar(16),
ServerIP varchar(16),
ClientPort int(11) default 0,
ServerPort int(11) default 0,
StartNum int(11) default 0,
EndNum int(11) default 0,
Diff int(11) default 0,
primary key (ClientIP,ServerIP,ClientPort,ServerPort)
)');

prepare stmtj from @j;
execute stmtj;
deallocate prepare stmtj;
TRUNCATE TABLE test;

set @a=concat('insert into test(ClientIP, ServerIP,ClientPort,ServerPort,StartNum) select ClientIP,ServerIP,ClientPort,ServerPort from SourceTable where Flag =1 and Time<="',startTime,'GROUP by ClientIP, ServerIP,ClientPort,ServerPort');
prepare stmta from @a;
execute stmta;
deallocate prepare stmta;

set @b=concat('insert into test(ClientIP, ServerIP,ClientPort,ServerPort,EndNum) select ClientIP,ServerIP,ClientPort,ServerPort from SourceTable where Flag =0 and Time<="',startTime,' GROUP by ClientIP, ServerIP,ClientPort,ServerPort');
prepare stmtb from @b;
execute stmtb;
deallocate prepare stmtb;

update test set Diff=StartNum - EndNum where StartNum - EndNum >0;


所以在临时表中得到(ClientIP, ServerIP,ClientPort,ServerPort,Diff)下面我想根据Diff个数,再在源表中查询相应的数据,并根据Diff个数限制每条记录的个数。
rucypli 2012-07-03
  • 打赏
  • 举报
回复
select col,count(*)
from tb
group by col
having count(*)>1
liubeck 2012-07-03
  • 打赏
  • 举报
回复
源表建表就不用贴了吧,我把我的存储过程贴出来一部分吧。

set @j=concat('
create temporary table if not exists test
(ClientIP varchar(16),
ServerIP varchar(16),
ClientPort int(11) default 0,
ServerPort int(11) default 0,
StartNum int(11) default 0,
EndNum int(11) default 0,
Diff int(11) default 0,
primary key (ClientIP,ServerIP,ClientPort,ServerPort)
)');

prepare stmtj from @j;
execute stmtj;
deallocate prepare stmtj;
TRUNCATE TABLE test;

set @a=concat('insert into test(ClientIP, ServerIP,ClientPort,ServerPort,StartNum) select ClientIP,ServerIP,ClientPort,ServerPort from SourceTable where Flag =1 and Time<="',startTime,'GROUP by ClientIP, ServerIP,ClientPort,ServerPort');
prepare stmta from @a;
execute stmta;
deallocate prepare stmta;

set @b=concat('insert into test(ClientIP, ServerIP,ClientPort,ServerPort,EndNum) select ClientIP,ServerIP,ClientPort,ServerPort from SourceTable where Flag =0 and Time<="',startTime,' GROUP by ClientIP, ServerIP,ClientPort,ServerPort');
prepare stmtb from @b;
execute stmtb;
deallocate prepare stmtb;

update test set Diff=StartNum - EndNum where StartNum - EndNum >0;

所以在临时表中得到(ClientIP, ServerIP,ClientPort,ServerPort,Diff)下面我想根据Diff个数,再在源表中查询相应的数据,并根据Diff个数限制每条记录的个数。
ACMAIN_CHM 2012-07-03
  • 打赏
  • 举报
回复
select 有个字段,sum(Flag) as a,sum(1-Flag) as b
from 源数据表
group by 有个字段
WWWWA 2012-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

贴建表及插入记录的SQL,及要求结果出来看看
[/Quote]
贴出来
liubeck 2012-07-03
  • 打赏
  • 举报
回复
我是在存储过程中使用的。源数据表有字段(SIP,SPORT,DIP,DPORT,Flag)。其中Flag为0或1,其他字段都可能相同。建一个临时表,首先使用GROUB BY SIP,SPORT,DIP,DPORT where Flag=1, 算出Flag=1个数a,再GROUB BY SIP,SPORT,DIP,DPORT where Flag=0 个数b。根据a-b的差值,打印该记录个数。
我是想自己在这个临时表中,直接select,并能根据a-b的差值打印出重复记录就好了,就是不知道sql查询怎么写。

如何这样不行,那根据临时表中的a-b的值和SIP,SPORT,DIP,DPORT字段的信息,再返回来再临时表中查询也行。但是根据a-b的值,如何在源表查询时,限制每条符合记录的个数呢。 比如临时表中一条记录为SIP,SPORT,DIP,DPORT,a-b=2.那我就要根据2和SIP,SPORT,DIP,DPORT,查询得到两条符合条件的记录。

我该如何处理呢,多谢赐教
WWWWA 2012-07-03
  • 打赏
  • 举报
回复
贴建表及插入记录的SQL,及要求结果出来看看
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL中动态传参和自定义函数: sql中使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery中查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹中多Excel文件并合并解决多文件合并中列顺序不一致使用参数和函数批量导入文件 文本中提取中文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列中的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧