最近研究了一下SQLSERVER数据库技术,现拿出来跟大伙分享,首先给出T-SQL脚本。
建立一张测试表:
CREATE
TABLE
TestTable (
Column1 varchar ( 1 ),
Column2 int
)
Column1 varchar ( 1 ),
Column2 int
)
加入一些测试数据:
INSERT
INTO
TestTable
VALUES
(
'
A
'
,
1
);
INSERT INTO TestTable VALUES ( ' A ' , 1 ); -- 重复
INSERT INTO TestTable VALUES ( ' A ' , 2 );
INSERT INTO TestTable VALUES ( ' B ' , 1 );
INSERT INTO TestTable VALUES ( ' B ' , 2 );
INSERT INTO TestTable VALUES ( ' B ' , 2 ); -- 重复
INSERT INTO TestTable VALUES ( ' C ' , 2 )
INSERT INTO TestTable VALUES ( ' A ' , 1 ); -- 重复
INSERT INTO TestTable VALUES ( ' A ' , 2 );
INSERT INTO TestTable VALUES ( ' B ' , 1 );
INSERT INTO TestTable VALUES ( ' B ' , 2 );
INSERT INTO TestTable VALUES ( ' B ' , 2 ); -- 重复
INSERT INTO TestTable VALUES ( ' C ' , 2 )
DELETE
FROM TestTable
WHERE TestTable. %% lockres %%
NOT IN ( SELECT MIN (b. %% lockres %% )
FROM TestTable b
GROUP BY b.column1, b.Column2)
FROM TestTable
WHERE TestTable. %% lockres %%
NOT IN ( SELECT MIN (b. %% lockres %% )
FROM TestTable b
GROUP BY b.column1, b.Column2)
sqlserver2008新特性删除重复记录:
DELETE
FROM TestTable
WHERE TestTable. %% physloc %%
NOT IN ( SELECT MIN (b. %% physloc %% )
FROM TestTable b
GROUP BY b.column1, b.Column2);
FROM TestTable
WHERE TestTable. %% physloc %%
NOT IN ( SELECT MIN (b. %% physloc %% )
FROM TestTable b
GROUP BY b.column1, b.Column2);
当然了如果TestTable 具备主键(假设主键为ID且identity(1,1)),我们可以通过传统的T-SQL语句获取不重复的记录:
--
建立主键
alter table TestTable with nocheck add
id int identity ( 1 , 1 ) primary key
go
-- 取唯一记录
select min (ID) from TestTable
group by column1, column2
go
alter table TestTable with nocheck add
id int identity ( 1 , 1 ) primary key
go
-- 取唯一记录
select min (ID) from TestTable
group by column1, column2
go
SQLSERVER2005随机取数据:
select
top
3
*
from
TestTable
order
by
newid
()
上述语句每次从TestTable内取出的3条随机记录。
SQLSERVER2005 row_number 函数:
该函数主要用于sql分页方面,给出简单范例代码:
select
*
from
(
select id, column1, column2, row_number() OVER ( order by id desc ) as row from TestTable
) a
where row between 1 and 3
select id, column1, column2, row_number() OVER ( order by id desc ) as row from TestTable
) a
where row between 1 and 3
这里id为 TestTable 的自增主键,每次按主键id降序后取前三条数据行。
查看SQLSERVER2005版本:
SELECT
SERVERPROPERTY(
'
productversion
'
), SERVERPROPERTY (
'
productlevel
'
), SERVERPROPERTY (
'
edition
'
)
这里给出不同版本的SQLSERVER2005版本:
RTM版:
sp3版:
SQLSERVER2005所有版本:
发行版 | Sqlservr.exe |
RTM | 2005.90.1399 |
SQL Server 2005 Service Pack 1 | 2005.90.2047 |
SQL Server 2005 Service Pack 2 | 2005.90.3042 |
SQL Server 2005 Service Pack 3 | 2005.90.4035 |
最后,希望本文可以给您带来帮助。