Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 数据库 / MySQL / SQL Server 数据行无法删除 和 复制表结构

下面是我在做系统时遇到的两个问题<1>.sql server中多行所有数据重复,无法更新或删除问题通常是在没有主键的情况下的表.错误:先确认一下表中有没有主键,要是没有就得使用临时表来实现删除重复的行。方法一:
DELETE FROM 表名 WHERE 主键字段名 IN(
SELECT MAX(主键字段名) AS 主键字段名 FROM表名 GROUP BY 其他字段 HAVINGCOUNT(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,uidtruncate table tab_Test2insert 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语句应如何实现呢?考虑一个问题,所到的指定表是不是空表?
  1. /*table4不存在时*/  
  2.     
  3.   select a.col1, b.col2, c.col3  
  4.   into table4  
  5.   from tableA a, tableB b, tableC c  
  6.   where 1 = 0  
但是,一旦表4已经存在的话,会报错。如果是想在表4中增加这几个字段,但这些字段的数据不需要添加到表4中来
  1. select  
  2.   *  
  3.   into 表5  
  4.   from  
  5.   表4 m  
  6.   left join  
  7.   (select a.字段1,b.字段2,c.字段3 from 表A a,表B b,表C c where  1<>1) n  
  8.   on  
  9.   1=1  
  10.   
  11. drop table 表4  
  12.   
  13. exec sp_rename ’表5’,’表4’  
SQL多条件查询拼接in中条件方法MySQL Innodb_flush_method相关资讯      SQL Server 
  • Build2016喜讯:Linux用户注册微软  (03月17日)
  • SQL Server on Linux 理由浅析  (03月09日)
  • 管理SQL Server服务的登录(启动)  (02月13日)
  • 微软要抢甲骨文用户?从Oracle迁移  (03月13日)
  • 微软发布面向Linux的SQL Server预  (03月08日)
  • SQL Server如何修改自增列值以及相  (01月23日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数