B
bryantd
Unregistered / Unconfirmed
GUEST, unregistred user!
假设有一个表对应有两个字段Phones (PhoneNumber , FileName),表示number在哪个file中:
PhoneNumber FileName
111 file1
222 file1
222 file2
333 file3
111 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 file1
222 file2
333 file3
111 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数据库!)