现在有表TB,字段:ID,A,B,C,D,E...
其中ID是关键字段,不重复。
现在想查找出表中A、B、C三个字段,只要有一个字段相等,就是一类,问这这表中有多少个类,如何快速的找出这些类,从每个类中,把这个类下的记录其它字段对比一下,选择其中某条记录的某个字段,做为新表对应字段的值,将数据保存到新表中。
例:
ID A B C D E F
001 A1 B1 C1 1 2 3
002 A1 B1 C2 23 34 5
003 A1 B2 C1 1 2 3
004 A1 B2 C2 1 2 3
005 A2 B1 C1 1 2 3
006 A2 B1 C2 1 2 3
007 A2 B2 C1 1 2 3
008 A2 B2 C2 1 2 3
009 A3 B3 C3 1 2 3 那么查出来应该有两个类 001-008是一个类,009是一个类,那么我可以在001-008中任意从A B C D E F中选择值,放于新表中,不是从001-008中选择任意记录。 009就一条记录,直接保存。
请问,这种表如何找出类似数据呢?(数据库中的数据是百万级的)
我现在的想法就是一条一条对比,先读出一条记录,对比剩下的记录,找出和这条类似的,设标识,把这些记录一条一条读取,和数据库中其它数据对比。例如 表A,记录A1-A1000
先读取A1,对比A2-A1000,把A1和查找出和A1的A,B,C三个字段相同的数据,设标识,放到新表AA1,其中A1记录设标识,再一一取出AA1中除A1的其它记录,和A表中没有标识的其它数据对比,一直下去,直到AA1表中所有记录遍历一遍,从A表中查不出和AA1表中任意一条记录相似的,那么AA1就是一个类,A中剩下的从新开始查找。大家多出点想法。
其中ID是关键字段,不重复。
现在想查找出表中A、B、C三个字段,只要有一个字段相等,就是一类,问这这表中有多少个类,如何快速的找出这些类,从每个类中,把这个类下的记录其它字段对比一下,选择其中某条记录的某个字段,做为新表对应字段的值,将数据保存到新表中。
例:
ID A B C D E F
001 A1 B1 C1 1 2 3
002 A1 B1 C2 23 34 5
003 A1 B2 C1 1 2 3
004 A1 B2 C2 1 2 3
005 A2 B1 C1 1 2 3
006 A2 B1 C2 1 2 3
007 A2 B2 C1 1 2 3
008 A2 B2 C2 1 2 3
009 A3 B3 C3 1 2 3 那么查出来应该有两个类 001-008是一个类,009是一个类,那么我可以在001-008中任意从A B C D E F中选择值,放于新表中,不是从001-008中选择任意记录。 009就一条记录,直接保存。
请问,这种表如何找出类似数据呢?(数据库中的数据是百万级的)
我现在的想法就是一条一条对比,先读出一条记录,对比剩下的记录,找出和这条类似的,设标识,把这些记录一条一条读取,和数据库中其它数据对比。例如 表A,记录A1-A1000
先读取A1,对比A2-A1000,把A1和查找出和A1的A,B,C三个字段相同的数据,设标识,放到新表AA1,其中A1记录设标识,再一一取出AA1中除A1的其它记录,和A表中没有标识的其它数据对比,一直下去,直到AA1表中所有记录遍历一遍,从A表中查不出和AA1表中任意一条记录相似的,那么AA1就是一个类,A中剩下的从新开始查找。大家多出点想法。
解决方案 »
- 急求这个怎么写sql?
- oracle 触发器问题 在线等
- 关于SQL查询出来的数据合并问题。求解答急
- oracle长事务,死锁问题
- 求教数据库同步的问题
- 一个关于插入、删除的触发器问题。
- 请教什么是MERGE文
- 如何用sqlplus执行一个sql文件
- 第一次安装10g到最后提示:ORA-28547连接服务器失败,可能是NET8管理错误。
- 插入10000000行数据的问题
- 对于除了select * from table_name for update wait以外,其他的SQL语句有没有for update wait子句
- Oracle11g 安装失败!Enterprise Manager configuration failed due to the following error
可以用row_number函数,使用over,来生成3个伪列。分别表示A,B,C在所有值的顺序。
然后抽取这3个伪列都是1的数据就可以了。问题就是:使用分析函数的话,速度会是一个问题.
假如你的数据里面,根本重复的就不多的话,更加会慢.