SQL的一些東東

 获取字段类型
SELECT syscolumns.name AS 列名, systypes.name AS 数据类型
FROM syscolumns,sysobjects,systypes
WHERE syscolumns.id = sysobjects.id and syscolumns.xtype = systypes.xtype{ and systypes.name <> 'sysname'{系统提供的用户定义数据类型,功能上相当于nvarchar(128),用于引用数据库对象名称}} and sysobjects.name = N'表名'
ORDER BY syscolumns.colid

 

测试SQL语句性能
SET STATISTICS io ON
SET STATISTICS time ON
go
select  * from TB  ---你要测试的sql语句
go
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF

 

SQL语句查询结果额外添加一列序号自动增加
id为惟一列:
SELECT (SELECT COUNT(*) FROM s_phonemain m1 WHERE m1.id <= m2.id) AS seq, CompDepa, floor, ItemTeam
FROM S_PhoneMain m2 ORDER BY seq
id+compdepa组成惟一列:
SELECT (SELECT COUNT(*) FROM s_phonemain m1 WHERE (convert(nvarchar(10),m1.id)+m1.compdepa) <= (convert(nvarchar(10),m2.id)+m2.compdepa)) AS seq, CompDepa, floor, ItemTeam
FROM S_PhoneMain m2 ORDER BY seq

 

SQL存储过程自动回滚

create proc  
  ...  
  as  
  begin  
      set xact_abort on  --设置出错时自动回滚事务 
      begin transaction    
       
      insert tabel1 vaule(...)  
      if @@error<>0 then  
      begin  
          rollback transaction  
          return  
      end  
      insert tabel2 vaule(...)  
      if  @@error<>0 then  
      begin  
          rollback transaction  
          return  
      end  
       
      commit transaction  
      return

 

删除重复数据

如果该表需要删除重复的记录(重复记录保留1条):

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

 

另一种方法是一个字段重复,ID不重复:

delete 表 where id not in(SELECT MAX(id) AS id FROM 表 GROUP BY rows) --- 删除重复行

select * from 表 where id in(SELECT MAX(id) AS id FROM 表 GROUP BY rows) --重复行只查询一条

SELECT COUNT(DISTINCT 字段) AS Expr1, COUNT(*) AS Expr2 FROM 表 --统计

 

关于学生成绩:http://www.cnblogs.com/tenghoo/archive/2007/06/11/779240.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值