我想在没有任何查询条件的情况下对数据库里所有数据对行一个对比~~以一个字段为标准~~~因为数据很大~种类很多~~如果手动输入查询条件工作量很大~~有没有一种方法可以实现在不输入查询条件的情况下对数据内所有数据进行一个对比~当指定的字段有内有重复的就列出结果~~~~~~~~~~
9 个解决方案
#1
select distinct filedname from ..
#2
二楼那个可以吗?
好像是列出不重复的记录,也就是说若有完全相同的记录就只列出一条!
刚学了几条SQL。
我解决这个问题只知道用循环!不知道还有什么办法!
请高手指点
好像是列出不重复的记录,也就是说若有完全相同的记录就只列出一条!
刚学了几条SQL。
我解决这个问题只知道用循环!不知道还有什么办法!
请高手指点
#3
sql="select filedName1,filedName2,…,count(*) as filedNameN from tableName group by filedName1 having count(*)>1"
#4
如果指定的字段是“filedName1”,SQL语句就是这样:
sql="select filedName1,filedName2,…,count(*) as filedNameN from tableName group by filedName1 having count(*)>1"
以上语句IIS6,accessXP,IE6 下测试通过,当然filedName1相同的只列一条记录,有点美中不足·
#5
根据实际数据类型可选cint()或cdbl()...
#6
晕。。。发错地方了。。。
对这个问题提一个建议:
1.用你说的循环
select distinct fldName from table
再从结果中进行匹配
2.可以使用excel处理后(对这个熟^_^),再导回sql表,肯定能很快得到你想要的结果
a.数据导出excel表
b.按fldName排序
c.增加一列,输入公式if(cur_col=pre_col,1,0),cur_col是当前列fldName的值,pre_col是当前列的上一列fldName的值
d.copy新增的那列,选择性粘贴值,按这一列排序
e.新增列值为0的数据即为不重复的fldName
对这个问题提一个建议:
1.用你说的循环
select distinct fldName from table
再从结果中进行匹配
2.可以使用excel处理后(对这个熟^_^),再导回sql表,肯定能很快得到你想要的结果
a.数据导出excel表
b.按fldName排序
c.增加一列,输入公式if(cur_col=pre_col,1,0),cur_col是当前列fldName的值,pre_col是当前列的上一列fldName的值
d.copy新增的那列,选择性粘贴值,按这一列排序
e.新增列值为0的数据即为不重复的fldName
#7
各位热心的朋友,实在不好意思,昨天晚上上不了网,没有及时给你们加分以及回答你们的问题~~~
因为数据可能有十万条或者更多,如果每条记录从头到尾进行一次对比,10万条记录要对比多长时间了?有没有人能给一个具体一点的实例.
qiqunet(无聊到在这里玩CSDN的干棍)可能理解错了吧,因为我只是在一个字段里查重复的信息,比如说数据库内是图书信息,我只对字段名为"bookname"这个字段时行查重,可是书名有上万种,不想手工一一的进行输入再查询(这种方法太没有效率了),所以我想有没有一个方法让数据库自己对"bookname"这一个字段执行查重,并返回所有有重复数据
chjpeng(棲鵬)您说的用EXCEL处理,可在没有条件在服务器上用这个软件的时候,如果在本机会进行处理,然后上传数据库这种方法是可行的,可是当数据库很大的时候上传的时候会比较长,这种方法就不能满足需要了~~~
请各位大侠看看有没有更好的解决方法~~~~~~
因为数据可能有十万条或者更多,如果每条记录从头到尾进行一次对比,10万条记录要对比多长时间了?有没有人能给一个具体一点的实例.
qiqunet(无聊到在这里玩CSDN的干棍)可能理解错了吧,因为我只是在一个字段里查重复的信息,比如说数据库内是图书信息,我只对字段名为"bookname"这个字段时行查重,可是书名有上万种,不想手工一一的进行输入再查询(这种方法太没有效率了),所以我想有没有一个方法让数据库自己对"bookname"这一个字段执行查重,并返回所有有重复数据
chjpeng(棲鵬)您说的用EXCEL处理,可在没有条件在服务器上用这个软件的时候,如果在本机会进行处理,然后上传数据库这种方法是可行的,可是当数据库很大的时候上传的时候会比较长,这种方法就不能满足需要了~~~
请各位大侠看看有没有更好的解决方法~~~~~~
#8
我认为用 qiqunet(无聊到在这里玩CSDN的干棍) 的方法挺不错的,用分组查询
#9
//qiqunet(无聊到在这里玩CSDN的干棍)可能理解错了吧,因为我只是在一个字段里查重复的信息,
////////////////////////////////////////////////
如果指定的字段是“filedName1”,SQL语句就是这样:
sql="select filedName1,filedName2,…,count(*) as filedNameN from tableName group by filedName1 having count(*)>1"
当然filedName1相同的只列一条记录,有点美中不足
/////////////////////////////////////////////////
不是我理解错,而是你没有理解而已,我说明了我的语句“美中不足”!
为因它就是对一个字段进行是否有重复查询,有就返回重复记录个数,没有重复的记录就略过,
不足就在于,对重复的记录,它“只返回第一条记录”!
为什么我没有按你的意思 100% 地做出来?就因为我的能力所限,我做不到,所以我说这是“美中不足”的一条语句。
以我做程序和使用软件的思路来看,这条语句其实已经足够了,特别是在重复记录很多的情况下,每种重复的只显示一行,这样做使页面更清晰明了,用户若想进一步查看重复的具体情况,点击重复的书名就可进一步查询列出该重复书名的各项详细情况。
但我的想法不一定符合客户的实际需求,这是事实。
另外,个人认为:
用循环也好,用 SQL 语句也好,其实际都是要计算机干完同一件工作,只要你的循环写得好,无用功做少点,循环就不一定会比 SQL 语句慢很多。
所以SQL实在不行时就用循环,不见得有什么不好。用循环时,选取记录时最好按指定字段排序。
#1
select distinct filedname from ..
#2
二楼那个可以吗?
好像是列出不重复的记录,也就是说若有完全相同的记录就只列出一条!
刚学了几条SQL。
我解决这个问题只知道用循环!不知道还有什么办法!
请高手指点
好像是列出不重复的记录,也就是说若有完全相同的记录就只列出一条!
刚学了几条SQL。
我解决这个问题只知道用循环!不知道还有什么办法!
请高手指点
#3
sql="select filedName1,filedName2,…,count(*) as filedNameN from tableName group by filedName1 having count(*)>1"
#4
如果指定的字段是“filedName1”,SQL语句就是这样:
sql="select filedName1,filedName2,…,count(*) as filedNameN from tableName group by filedName1 having count(*)>1"
以上语句IIS6,accessXP,IE6 下测试通过,当然filedName1相同的只列一条记录,有点美中不足·
#5
根据实际数据类型可选cint()或cdbl()...
#6
晕。。。发错地方了。。。
对这个问题提一个建议:
1.用你说的循环
select distinct fldName from table
再从结果中进行匹配
2.可以使用excel处理后(对这个熟^_^),再导回sql表,肯定能很快得到你想要的结果
a.数据导出excel表
b.按fldName排序
c.增加一列,输入公式if(cur_col=pre_col,1,0),cur_col是当前列fldName的值,pre_col是当前列的上一列fldName的值
d.copy新增的那列,选择性粘贴值,按这一列排序
e.新增列值为0的数据即为不重复的fldName
对这个问题提一个建议:
1.用你说的循环
select distinct fldName from table
再从结果中进行匹配
2.可以使用excel处理后(对这个熟^_^),再导回sql表,肯定能很快得到你想要的结果
a.数据导出excel表
b.按fldName排序
c.增加一列,输入公式if(cur_col=pre_col,1,0),cur_col是当前列fldName的值,pre_col是当前列的上一列fldName的值
d.copy新增的那列,选择性粘贴值,按这一列排序
e.新增列值为0的数据即为不重复的fldName
#7
各位热心的朋友,实在不好意思,昨天晚上上不了网,没有及时给你们加分以及回答你们的问题~~~
因为数据可能有十万条或者更多,如果每条记录从头到尾进行一次对比,10万条记录要对比多长时间了?有没有人能给一个具体一点的实例.
qiqunet(无聊到在这里玩CSDN的干棍)可能理解错了吧,因为我只是在一个字段里查重复的信息,比如说数据库内是图书信息,我只对字段名为"bookname"这个字段时行查重,可是书名有上万种,不想手工一一的进行输入再查询(这种方法太没有效率了),所以我想有没有一个方法让数据库自己对"bookname"这一个字段执行查重,并返回所有有重复数据
chjpeng(棲鵬)您说的用EXCEL处理,可在没有条件在服务器上用这个软件的时候,如果在本机会进行处理,然后上传数据库这种方法是可行的,可是当数据库很大的时候上传的时候会比较长,这种方法就不能满足需要了~~~
请各位大侠看看有没有更好的解决方法~~~~~~
因为数据可能有十万条或者更多,如果每条记录从头到尾进行一次对比,10万条记录要对比多长时间了?有没有人能给一个具体一点的实例.
qiqunet(无聊到在这里玩CSDN的干棍)可能理解错了吧,因为我只是在一个字段里查重复的信息,比如说数据库内是图书信息,我只对字段名为"bookname"这个字段时行查重,可是书名有上万种,不想手工一一的进行输入再查询(这种方法太没有效率了),所以我想有没有一个方法让数据库自己对"bookname"这一个字段执行查重,并返回所有有重复数据
chjpeng(棲鵬)您说的用EXCEL处理,可在没有条件在服务器上用这个软件的时候,如果在本机会进行处理,然后上传数据库这种方法是可行的,可是当数据库很大的时候上传的时候会比较长,这种方法就不能满足需要了~~~
请各位大侠看看有没有更好的解决方法~~~~~~
#8
我认为用 qiqunet(无聊到在这里玩CSDN的干棍) 的方法挺不错的,用分组查询
#9
//qiqunet(无聊到在这里玩CSDN的干棍)可能理解错了吧,因为我只是在一个字段里查重复的信息,
////////////////////////////////////////////////
如果指定的字段是“filedName1”,SQL语句就是这样:
sql="select filedName1,filedName2,…,count(*) as filedNameN from tableName group by filedName1 having count(*)>1"
当然filedName1相同的只列一条记录,有点美中不足
/////////////////////////////////////////////////
不是我理解错,而是你没有理解而已,我说明了我的语句“美中不足”!
为因它就是对一个字段进行是否有重复查询,有就返回重复记录个数,没有重复的记录就略过,
不足就在于,对重复的记录,它“只返回第一条记录”!
为什么我没有按你的意思 100% 地做出来?就因为我的能力所限,我做不到,所以我说这是“美中不足”的一条语句。
以我做程序和使用软件的思路来看,这条语句其实已经足够了,特别是在重复记录很多的情况下,每种重复的只显示一行,这样做使页面更清晰明了,用户若想进一步查看重复的具体情况,点击重复的书名就可进一步查询列出该重复书名的各项详细情况。
但我的想法不一定符合客户的实际需求,这是事实。
另外,个人认为:
用循环也好,用 SQL 语句也好,其实际都是要计算机干完同一件工作,只要你的循环写得好,无用功做少点,循环就不一定会比 SQL 语句慢很多。
所以SQL实在不行时就用循环,不见得有什么不好。用循环时,选取记录时最好按指定字段排序。