關於SQLserver2005的特性,我在下邊給大家介紹下。首先給出T-SQL腳本。
建立一張測試表:
- CREATE TABLE TestTable (
- 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);
使用sqlserver2005新特性刪除重復記錄:
- DELETE
- 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);
當然了如果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
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
這裡id為 TestTable 的自增主鍵,每次按主鍵id降序後取前三條數據行。
查看SQLSERVER2005版本:
- SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition'
這裡給出不同版本的SQLSERVER2005版本:
RTM版:
sp3版:
SQLSERVER2005所有版本:
發行版Sqlservr.exe
RTM2005.90.1399
SQL Server 2005 Service Pack 12005.90.2047
SQL Server 2005 Service Pack 22005.90.3042
SQL Server 2005 Service Pack 32005.90.4035
最後,希望本文可以給您帶來幫助。