在数据查询中,大家可能经常会碰到这样的问题,把表中不相同的记录查出来,这个问题相当容易解决,用distinct关键字就可以轻松搞定,而我们比较少见的把有相同的记录查出来就不是那么容易解决的事情了,因为它的情况多样,不同的情况解决的方法各有不同.
问题的由来:我一同学在政府部门上班的,他常遇到了这样的问题,查询表里面有N条相同的记录,假如有一表table,有四个字段,分别是a,b,c,d,查询表中相同的记录,我给出的sql语句为:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->select a,b,c,d from table group by a,b,c,d having count(*)>1
这个语句能解决的就是查出所有相同记录,但每个相同的记录在结果集中只有一条,这个结果不是他想要的, 他要的是把相同的记录全部查出,这样问题就复杂了,应该分两种情况来:一、每一条记录都同一个字段唯一决定,如果那一字段相同则这条记录相同;二、每条记录要由两个以上的字段相同才相同.
对于问题一给出的答案是:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->select * from table where a in (select a from table group by a having count(*)>1)
对于问题二给出的答案是:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->select table.* from table join (select a,b,c,d from table group by a,b,c,d having count(*)>1) b
on table.a = b.a and table.b = b.b andtable.c = b.c and table.d = b.d
对于问题二我觉得答案虽然能解决暂时的问题,但毕竟不好用,如果字段多了,有几十个怎么办?显然一个个的不实际的,效率也不高。如果高手有别的解法不妨联系我!
分享到:
相关推荐
### IFIX配置历史报警记录存储至SQL数据库及历史报警查询 #### 一、配置报警记录连接ODBC数据库 本文档将详细介绍如何通过IFIX配置历史报警记录存储至SQL Server数据库的过程,并实现对历史报警记录的有效查询。...
老司机总结的 12 条 SQL 优化方案(非常实用) SQL 语句的优化是数据库性能优化的关键步骤之一。本节将详细介绍老司机总结的 12 条 SQL 优化方案。 1. 尽量避免使用子查询 子查询在 MySQL 5.5 版本中_internal ...
5、查询表中的数据 1)、查询所有行 命令:select <字段,字段,...> from 表名 > where 表达式 > 例如:查看表 MyClass 中所有数据 mysql> select * from MyClass; 2)、查询前几行数据 例如:查看表 MyClass ...
二、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为 1-255 字节 这是一个典型的 Top K 算法问题,解决方案是使用 Hash 表完成排序,然后使用堆结构找出 Top K。时间复杂度为...
而且数据太长,影响数据库效率.GUID的产生不是以一定的次序产生, 对于按主键物理排序的数据库来说,如果在记录的前部插入一条记录,可能会导致后面N次方的数据条数后移.这将导致数据插入效率. 因此GUID的采用应该要慎重...
4. **执行SQL语句并获取结果**:利用`EXECUTE IMMEDIATE`执行SQL查询,并将结果集中的第一列(即记录数)赋值给变量`N`。 5. **输出结果**:最后通过`DBMS_OUTPUT.PUT_LINE`函数输出查询结果。 ##### 示例二:创建...
- `alt幂等根据partnerOrder\n查找支付记录`:order-server内部实现幂等性的机制,根据`partnerOrder`等字段组合成的唯一标识进行查询,判断是否存在重复的支付记录。 - **存在支付记录**:`order-server"->"order...
覆盖索引是在某个查询里面,索引 k 已经“覆盖了”我们的查询需求,称为覆盖索引。索引下推是 MySQL 5.6 引入的索引下推优化,可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少...
10. 病毒事件及攻击日志信息查看:可以在日志访问里面查看到对应的病毒事件及攻击日志信息,并且有对应URL链接可以查询详细的事件解释。 11. 攻击计数器查看:可以在系统状态页方便的查看到攻击计数器。
arcgis工具总结 1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关。 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Snapping Environment对话框 捕捉设置...
覆盖索引:在某个查询里面,索引 k 已经“覆盖了”我们的查询需求,称为覆盖索引。索引下推:MySQL 5.6 引入的索引下推优化(index condition pushdown),可以在索引遍历过程中,对索引中包含的字段先做判断,直接...
AIX常用命令://查看机器序列号,IBM的基本信息都可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q //...
这个表记录了模板字符串中每个前缀和后缀的最大公共长度。当发现不匹配时,不是简单地回溯,而是根据部分匹配表确定新的起始位置,避免了不必要的回溯。KMP算法在处理具有重复子串的模式时,效率显著提高。 下面是...
# 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少. # 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80% # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸....
- **段的元数据信息**(segments_N):记录了当前索引中所有段的信息。 - **域(Field)的元数据信息**(.fnm):描述每个字段的基本属性。 - **域(Field)的数据信息**(.fdt,.fdx):存储每个字段的实际内容。 - **...
可以把这个 next 引用,写进一个 list,以后都把 next 引用和 list 里面的内容进行比较,如果有相同的就是环,没有就不是。 环形链表是一种特殊的链表,它的最后一个节点指向前面的某个节点。检测环形链表可以使用...
实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、清除RAS自动拨号历史记录、清除系统临时文件夹、清空回收站、清除...
mysql 总结........................................................................................................................................6 1.1 数据库的种类.......................................