SQL SERVER 經典語句大全必學(2)——提升篇
二、提升
6、說明:外連線查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:線上檢視查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
9、說明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
12、說明:日程安排提前五分鐘提醒
SQL: select * from 日程安排where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定資料庫分頁
select top 10 b.* from (select top 20 主鍵欄位,排序欄位from 表名order by 排序欄位desc) a,表名b where b.主鍵欄位= a.主鍵欄位order by a.排序欄位
具體實現:
關於資料庫分頁:
declare @start int,@end int
@sql nvarchar(600)
set @sql=’select top’+str(@[email protected]+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’
exec sp_executesql @sql
注意:在top後不能直接跟一個變數,所以在實際應用中只有這樣的進行特殊的處理。Rid為一個標識列,如果top後還有具體的欄位,這樣做是非常有好處的。因為這樣可以避免top的欄位如果是邏輯索引的,查詢的結果後實際表中的不一致(邏輯索引中的資料有可能和資料表中的不一致,而查詢時如果處在索引則首先查詢索引)
14、說明:前10條記錄
select top 10 * form table1 where 範圍
17、說明:隨機取出10條資料
select top 10 * from tablenameorder by newid()
alter table tablename
--新增一個自增列
add column_bint identity(1,1)
delete from tablenamewhere column_b not in(
select max(column_b) from tablenamegroup bycolumn1,column2,...)
alter table tablenamedrop column column_b
20、說明:列出資料庫裡所有的表名
select name from sysobjects where type='U' // U代表使用者
21、說明:列出表裡的所有的列名
select name from syscolumns where id=object_id('TableName')
TRUNCATE TABLE table1