sql中如何去掉一条记录?
2个回答
展开全部
如果所用的数据库是
Microsoft
SQL
Server的话,对于这种所有字段完全相同的数据记录,是无法做到只删除一条的,因为数据库无法定位这些相同的记录中的某一条!
所以,如果执行删除的话,只有两种可能(具体看你所使用的SQL查询工具了):1)报错,无法删除,比如在SQL企业管理器中直接选中数据并做删除操作;2)相同的记录全部删除,比如用SQL查询分析器。
那么楼主的问题要如何解决呢,思路是这样:
1)去掉重复的:
select
distinct
*
into
#tmp
from
[tablename]
--将唯一性记录写入临时表
delete
from
[tablename]
--将原表数据清空(最好先备份一下原数据表)
insert
into
[tablename]
select
*
from
#tmp
--从临时表将数据插回
2)如果一定要数据重复,那请修改表[tablename]结构,增加一个[ID]字段,并让它自动增长,以便将相同记录区分开来。然后将需要重复的记录用如下语句重复插入:
insert
into
[tablename]
(字段列表-不包含那个ID字段)
select
(字段列表-不包含那个ID字段)from
[tablename]
where
[ID]=XXXX
(注:XXX是事先查到的需要重复的记录ID字段值)
GoodLuck!
希望对你能有所帮助。
Microsoft
SQL
Server的话,对于这种所有字段完全相同的数据记录,是无法做到只删除一条的,因为数据库无法定位这些相同的记录中的某一条!
所以,如果执行删除的话,只有两种可能(具体看你所使用的SQL查询工具了):1)报错,无法删除,比如在SQL企业管理器中直接选中数据并做删除操作;2)相同的记录全部删除,比如用SQL查询分析器。
那么楼主的问题要如何解决呢,思路是这样:
1)去掉重复的:
select
distinct
*
into
#tmp
from
[tablename]
--将唯一性记录写入临时表
delete
from
[tablename]
--将原表数据清空(最好先备份一下原数据表)
insert
into
[tablename]
select
*
from
#tmp
--从临时表将数据插回
2)如果一定要数据重复,那请修改表[tablename]结构,增加一个[ID]字段,并让它自动增长,以便将相同记录区分开来。然后将需要重复的记录用如下语句重复插入:
insert
into
[tablename]
(字段列表-不包含那个ID字段)
select
(字段列表-不包含那个ID字段)from
[tablename]
where
[ID]=XXXX
(注:XXX是事先查到的需要重复的记录ID字段值)
GoodLuck!
希望对你能有所帮助。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询