sql server 数据行无法删除 和 复制表结构
2012-09-25 14:11
253 查看
下面是我在做系统时遇到的两个问题
<1>.sql server中多行所有数据重复,无法更新或删除问题
通常是在没有主键的情况下的表.
错误:
先确认一下表中有没有主键,要是没有就得使用临时表来实现删除重复的行。
方法一:
DELETE FROM 表名 WHERE 主键字段名 IN(
SELECT MAX(主键字段名) AS 主键字段名 FROM表名 GROUP BY 其他字段 H***INGCOUNT(1)>1)
方法二:
SELECT 字段列表 INTO #T FROM 表名GROUP BY 字段列表
--先删除原来的数据表,再插入不重复的语句
TRUNCATE TABLE 表名
INSERT INTO 表名 SELECT * FROM #T
DROP TABLE #T
示例:
方法一:
delete from tab_test2 where id=(select max(id) from tab_test2 group by id,uid having count(1)>1)
方法二:注意:#t是临时表,在tempdb数据库中的临时表节点下可以找到,sqlserver服务重启就会消失的表.
select id,uid into #t from tab_Test2 group by id,uid
truncate table tab_Test2
insert into tab_Test2 select * from #t
<2>.复制其它表的结构到一指定的表中去
比如以下的例子:
有如下三个表:
表A:字段1,
字段2,
字段3
表B:字段1,
字段2,
字段3
表C:字段1,
字段2,
字段3
现在想复制A表的字段1,B表的字段2,C表的字段3到表4中去。不需要表中的数据。
用SQL语句应如何实现呢?
考虑一个问题,所到的指定表是不是空表?
但是,一旦表4已经存在的话,会报错。如果是想在表4中增加这几个字段,但这些字段的数据不需要添加到表4中来
<1>.sql server中多行所有数据重复,无法更新或删除问题
通常是在没有主键的情况下的表.
错误:
先确认一下表中有没有主键,要是没有就得使用临时表来实现删除重复的行。
方法一:
DELETE FROM 表名 WHERE 主键字段名 IN(
SELECT MAX(主键字段名) AS 主键字段名 FROM表名 GROUP BY 其他字段 H***INGCOUNT(1)>1)
方法二:
SELECT 字段列表 INTO #T FROM 表名GROUP BY 字段列表
--先删除原来的数据表,再插入不重复的语句
TRUNCATE TABLE 表名
INSERT INTO 表名 SELECT * FROM #T
DROP TABLE #T
示例:
方法一:
delete from tab_test2 where id=(select max(id) from tab_test2 group by id,uid having count(1)>1)
方法二:注意:#t是临时表,在tempdb数据库中的临时表节点下可以找到,sqlserver服务重启就会消失的表.
select id,uid into #t from tab_Test2 group by id,uid
truncate table tab_Test2
insert into tab_Test2 select * from #t
<2>.复制其它表的结构到一指定的表中去
比如以下的例子:
有如下三个表:
表A:字段1,
字段2,
字段3
表B:字段1,
字段2,
字段3
表C:字段1,
字段2,
字段3
现在想复制A表的字段1,B表的字段2,C表的字段3到表4中去。不需要表中的数据。
用SQL语句应如何实现呢?
考虑一个问题,所到的指定表是不是空表?
/*table4不存在时*/ select a.col1, b.col2, c.col3 into table4 from tableA a, tableB b, tableC c where 1 = 0
但是,一旦表4已经存在的话,会报错。如果是想在表4中增加这几个字段,但这些字段的数据不需要添加到表4中来
select * into 表5 from 表4 m left join (select a.字段1,b.字段2,c.字段3 from 表A a,表B b,表C c where 1<>1) n on 1=1 drop table 表4 exec sp_rename ’表5’,’表4’
相关文章推荐
- sql server复制后无法删除
- Oracle与Sql Server复制表结构及数据
- Oracle与Sql Server复制表结构和数据
- SQL Server复制表结构和表数据生成新表的语句
- SQL Server删除表中的所有数据,值保留表结构。
- 在sql server不同的数据库之间复制表结构和数据
- 创建、删除、修改、复制表结构和复制数据SQL语句
- cluster 中的 sql node 和 单独的 sql server 做主从复制,数据无法同步(已解决)
- sql server 2008 从旧表复制表结构和数据到到新的表(没有表结构和数据)
- 删除SQL Server表中的数据,并把表的结构保存下来
- SQL Server 复制表结构与数据
- SQL Server复制表结构和表数据生成新表的语句
- Oracle与Sql Server复制表结构及数据
- SQL Server 对等复制配置失败后无法删除重建,报错:Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be im
- sql server 复制表结构及数据
- Oracle与Sql Server复制表结构及数据
- sql server 提示无法彻底删除_复制-而无法删除数据库或重新配置发布订阅
- Sql Server两个数据库中有一张表的结构一样,怎么快速将一张表中的数据复制到另一个表中
- SQL Server 表中有重复的数据,无法对重复数据进行更新或删除。
- SQL Server复制表结构和数据到另一表方法及问题解决方案