问:SQL删除重复列
- 答:共享下我所知道的..
1.如果要查找重复的列(具体步骤我就不说了,看sql语句你应该可以明白过程)
select
*
from
表名
where
重复的字段名in
(SELECT
重复的字段名
FROM
表名
group
by
重复的字段名
having
count(1)>1)
2.删除重复的列保留最早插入的那个(使用这种方法必须要有标示字段,你的好像没有)...
DELETE
FROM
表名
WHERE
重复的字段名
in
(SELECT
重复的字段名
FROM
表名
group
by
重复的字段名
having
count(1)>1)
and
你表中的第一个字段
not
in
(select
min(你表中的第一个字段)
from
表名
group
by
重复的字段名
having
count(1)>1)
最后要告诉你的是:看仔细了:
上面的删除方法是不能删除你所要删除的那列,因为你表中的数据没有唯一的标示,建议你从新建张表,设一个自增长字段..这样这张表就不会出现你所遇到的问题了.
问:sql中如何删除一个表中重复的记录?
- 答:create view a_dist_view as
select a.*, row_number() over(order by id, name) rn from a_dist as a
delete from a_dist_view where rn <> 1 - 答:如果记录完全相同才算重复记录,那么: (sql server2000下测试通过)
select distinct * into #tmpp from tid
delete from tid
insert into tid select * from #tmpp
drop table #tmpp
如果有id主键(数字,自增1的那种),那么:(sql server2000下测试通过)
delete from tableA where id not in
(select id = min(id) from tableA group by name) - 答:可以给你个想法,把不重复的多出来放到一个临时表中,删除原表,再将临时表的数据插入原表
- 答:sql中删除一个表中的重复记录可以采用如下步骤:
1、把a_dist表的记录用distinct去重,结果放到临时表中。
select distinct * into #temp from a_dist;
2、把a_dist表的记录全部删除。
delete from a_dist;
3、把临时表中的数据信息导进到a_dist表中,并删除临时表。
insert into a_dist select * from #temp;
drop table #temp;
扩展资料:
SQL (结构化查询语言)是用于执行查询的语法。在数据库上执行的大部分工作都由 SQL 语句完成。SQL 语言包含用于更新、插入和删除记录的语法。
增删改查指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据 - 答:全删吗?
delete from a_dist where id in(select id from a_dist group by id,name having count(*)<>1) - 答:1、必须保证表中有主键或者唯一索引,或者某列数据不能重复。只有这样,才可能使用一句SQL来实现。否则只能考虑其它办法。下面的语句,假定BB列是不重复的,删除后保存BB列值最大的那条记录。
delete from 表
where aa in (select aa from 表 group by aa having count(aa) > 1) and
bb not in (select max(bb) from 表 group by aa having count(aa) > 1);
2、有多种写法:
delete A from B where A.AA = B.AA
delete A from A,B where A.AA = B.AA
delete A where AA in (select AA from B)
3、使用into关键字:
select * into 新表名 from 原表
4、取数据前3位,字段必须是类似char类型,使用类似substring这样的函数(SYBASE是substring,ORACLE是substr):
select substring(字段,1,3) from 表名 - 答:delete 表 a wher rowid <>(max(rowid) from 表 b
where a.重复项=b.重复项 ); - 答:先删后加
delete from a_dist where id ='1' and name= 'abc' 执行删掉所有这样的记录,然后把数据记录下来在添加一次
insert into a_dist values(1,'abc');
问:SQL怎么去除某一列的重复项
- 答:假设存在一个主键ID,Name为重复列
--下面这句可以查出所有的没有重复的数据
select
*
from
表
as
a
where
ID=(select
min(ID)
from
表
where
Name=a.Name)
--根据上面这句就可以删除所有重复项的数据
delete
from
表
where
ID
not
in(
select ID
from
表
as
a
where
ID=(select
min(ID)
from
表
where
Name=a.Name)
)
好了~ - 答:select
*
(select
row_number()
over
(partition
by
column1
order
by
column2
asc)
as
num,*
from
table)
x
where
x.num
=
1
column1
--
重复列名
column2
--
排序列名
table
--
表名
table表的column1存在重复值,该SQL是查出根据column2升序排列保留column2最小的所有记录 - 答:select
*
(select
row_number()
over
(partition
by
column1
order
by
column2
asc)
as
num,*
from
table)
x
where
x.num
=
1
column1
--
重复列名
column2
--
排序列名
table
--
表名
table表的column1存在重复值,该SQL是查出根据column2升序排列保留column2最小的所有记录