站点图标 江湖人士

SQL删除重复记录,只保留一条数据

SQL删除重复记录,只保留一条数据

关于这个题目,其实以前在我工作中遇到过,当时就网上搜了一个SQL语句改了下表名及其它,完成了项目需求,就没有再关心过这个问题了。直到前天去面试,被考起这个题目,我不会;当天面试考了个斐波那契数列的编程题,一个杨辉三角的题,另外两道SQL大题,其中就有一个这样的删除重复记录的题目。现给出解决此题的答案,如下:

select distinct * into Temp from Student
truncate table Student
insert Student select * from Temp
drop table Temp
--至此删除了重复的数据。
--显示删除后的结果
select * from student

思路是先查询出没有重复的数据保存到一个临时的表Temp里面,然后再用truncate关键字删除目标表的数据内容,最后使用drop命令删除Temp表即可。

斐波那契数列非递归的C#代码解法如下:用数学里面的通项

static Int64 Fib(Int64 n)
{
     int first, second, third;
     first = second = third = 1;
     if (n==1||n==2)
     {
          return 1;
     }
     for (int i = 3; i <= n; i++)
     {
         first = second + third;
         third = second;
         second = first;
     }
     return first;
}

Fibonacci(斐波那契)序列:
Fib(n) = Fib(n – 1) + Fib(n – 2), n>1, Fib(1) = Fib(2) = 1 
即:序列的第一和第二项是1,从第三项开始,后一项是前两项的和。
序列的前8项是:
1, 1, 2, 3, 5, 8, 13, 21

退出移动版