假设有一个表对应有两个字段Phones (PhoneNumber , FileName),表示number在哪个file中:
PhoneNumber FileName
111 file1
222 file1222 file2333 file3111 file4
111 file4
222 file4
555 file4
555 file4
666 file4我希望写一条SQL语句,实现对file4的两个功能:
1: 如果file4文件中有重复的number,只保留一条;
2: 如果file4文件中的number和file1 file2 file3 文件中的number重复,则将他们从file4中删除。所以上面的示例中预想得到的结果是:
PhoneNumber fileName
555 file4
666 file4我自己的实现方法是这样的:
select Distinct PhonesA.PhoneNumber from Phones as PhonesA where PhonesA.FileName = 'file4' and PhonesA.PhoneNumber not in (select PhonesB.PhoneNumber from Phones as PhonesB where PhonesB.FileName <> 'file4');这个方法实现起来没有问题,但是一到数据量比较大的时候,电脑就出现了无相应的状况,所以希望求一条效率比较高的SQl语句(我用的是Access数据库!)
PhoneNumber FileName
111 file1
222 file1222 file2333 file3111 file4
111 file4
222 file4
555 file4
555 file4
666 file4我希望写一条SQL语句,实现对file4的两个功能:
1: 如果file4文件中有重复的number,只保留一条;
2: 如果file4文件中的number和file1 file2 file3 文件中的number重复,则将他们从file4中删除。所以上面的示例中预想得到的结果是:
PhoneNumber fileName
555 file4
666 file4我自己的实现方法是这样的:
select Distinct PhonesA.PhoneNumber from Phones as PhonesA where PhonesA.FileName = 'file4' and PhonesA.PhoneNumber not in (select PhonesB.PhoneNumber from Phones as PhonesB where PhonesB.FileName <> 'file4');这个方法实现起来没有问题,但是一到数据量比较大的时候,电脑就出现了无相应的状况,所以希望求一条效率比较高的SQl语句(我用的是Access数据库!)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货