Top
左连接右连接内连接全部上马,的确经典哦.
据说你写过上万行代码,大概这就是最经典的一段代码了吧.
Top
需求:
得到表中最小的未使用的ID号。
例:
table Name:Handle
HandleID
--------
1
2
5
6
7
--5 Records
执行结果须为3
解决:
SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID
FROMHandle
WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)
Top
两台SQL服务器上的一个数据表同步!
drop procedure dbSync
GO
/* 数据同步*/
CREATE PROCEDURE dbSync
@sTabelNamevarchar(255),--要同步的表名
@sKeyField varchar(255),--关键字段
@sServer varchar(255),--服务器名称或IP
@sUserName varchar(255),--登录到服务器的用户名,一般为sa
@sPassWord varchar(32)--用户登录到服务器的密码
AS
/*删除临时表*/
if exists (select * from dbo.sysobjects where id = object_id(N'tempTbl') and OECTPROPERTY(id, N'IsUserTable') = 1)
drop table tempTbl
declare @sql VARCHAR(2000)
/*把表@sTabelName[远程]的数据拷贝到临时表*/
set @sql='select * into tempTbl from '
set @sql=@sql + ' OPENDATASOURCE( '
set @sql=@sql + '''SQLOLEDB.1'','
set @sql=@sql + '''Persist Security Info=True;User;Password=' + @sPassWord
set @sql=@sql + ';Initial Catalog=toys;Data Source=' + @sServer
set @sql=@sql + ''').toys.dbo.'+@sTabelName
EXEC(@sql)
/* 把@sTabelName[本地]中的@sTabelName[远程]表中没有的数据插入到临时表中*/
set @sql='insert into tempTbl select * from '+@sTabelName+' where ['+@sKeyField+'] not in (select ['+@sKeyField+'] from tempTbl)'
EXEC(@sql)
/*清空表@sTabelName[本地]*/
set @sql='truncate table '+@sTabelName
EXEC(@sql)
--取得列名
declare @MySql VARCHAR(2000)
set @MySql=''
declare @title varchar(20)
DECLARE titles_cursor CURSOR FOR
SELECT name from syscolumns where id=object_id(@sTabelName)
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-30385-37.html
是央行拿捏恰当