亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

有用的SQL語句(刪除重復記錄,收縮日志)

2024-08-31 01:00:34
字體:
來源:轉載
供稿:網友
刪除重復記錄,將TABLE_NAME中的不重復記錄保存到#TABLE_NAME中

select distinct * into #table_name from table_name
delete from table_name
select * into table_name from #table_name
drop table #table_name

與此相關的是“select into”選項,可以在數據庫屬性
對話框中,勾起來此項,或者在Query Analyzer中執行
execute sp_dboption 'db_name','select into','true'
開啟。默認值是關閉的。


*******************************************************
收縮事務日志(多次執行)

backup log register with NO_LOG
backup log register with TRUNCATE_ONLY
DBCC SHRINKDATABASE(register)

更多有用的sql語句
/*sql 語法學習*/

/*函數的學習---------------------------------------*/

獲取當前時間(時/分/秒):select convert(varchar(10),getdate(),8)
獲取當前年月日:select convert(varchar(10),getdate(),120)
獲取當前年月:select convert(varchar(7),getdate(),120)
獲取當前年月:select convert(varchar(10),year(getdate())) + '-' + convert(varchar(10),month(getDate()))

select cast(b as integer) as bb from table1 where b = '11'

select a,case b when '11' then '細細' when '22' then '呵呵' else '哈哈' end as 轉換,c from table1

select a,b,case when c = '111' then '細細' when c = '222' then '呵呵' else '哈哈' end as 轉換1 from table1

獲取當前時間:print current_timestamp

/*---------------------------------------------*/

-----------------將sql查詢輸出到txt文本文件中-------------------------------------------
EXEC master..xp_cmdshell 'bcp 數據庫名.dbo.表名 out d:/1.txt -c -q -U"sa" -P"password"'

---------------------------------------------------------------------------------------

---------------------------round的用法beigin------------------------------
declare @s float
set @s = 0.1566134
print round(@s,3)
---------------------------round的用法end---------------------------------

--------------------------------自動收縮數據庫begin-----------------------------

EXEC [master]..sp_dboption [Database Name], 'autoshrink', 'TRUE'

--------------------------------自動收縮數據庫end-----------------------------


-------------------------------去除首尾無效的字符begin--------------------------
declare @s varchar(20)
set @s=',,,1->1,'
while(left(@s,1)=',')
set @s=stuff(@s,1,1,'')
while(right(@s,1)=',')
set @s=stuff(reverse(@s),1,1,'')
select @s
-------------------------------去除首尾無效的字符end--------------------------


------------刪除數據庫中的重復記錄(且僅保留一條有效記錄)示例-----------------
create table A
(
userID int identity(1,1),
userName varchar(20),
userPwd varchar(20),
userEmail varchar(50)
)
insert into A(userName,userpwd) select 'qin','qin' union all select 'qin','qin1' union all select 'qin','qin1'
select * from A

--method one
delete from A where userid not in(select min(userid) as userid from A group by username ,userpwd)

--method two
delete from A where exists (select * from A b where a.username = b.username and a.userpwd = b.userpwd and a.userid < b.userid)

--method three
delete from a where userid not in(select min(userid) from A b where a.username = b.username and a.userpwd = b.userpwd and a.userid > b.userID)

select * from A
drop table A

------------刪除數據庫中的重復記錄(且僅保留一條有效記錄)示例-----------------



-------------------------------迭歸的應用(找起點和終點之間的路徑-----------------------------
create table t
(st varchar(20),ed varchar(20),km int)
go
insert t values ('A','B',1000)
insert t values ('A','C',1100)
insert t values ('A','D',900)
insert t values ('A','E',400)
insert t values ('B','D',300)
insert t values ('D','F',600)
insert t values ('E','A',400)
insert t values ('F','G',1000)
insert t values ('C','B',600)
go
--顯示插入值
select * from t
go

--創建函數
--函數返回一個表,根據實際情況的不同一層一層的插入,可以充分利用生成的表
create function f_go(@col varchar(10))
returns @t table(col varchar(30),st varchar(20),ed varchar(20),km int,level int)
as
begin
declare @i int
set @i=1
insert @t select st+'-'+ed,*,@i from t where st=@col
while exists (select * from t a,@t b where
b.ed=a.st and b.level=@i and b.ed<>@col )
begin
set @i=@i+1
insert @t
select b.col+'-'+a.ed,a.st,a.ed,b.km+a.km,@i from t a,@t b
where b.level=@i-1 and b.ed=a.st and b.ed<>@col
end
return
end
go

--調用
--select * from dbo.f_go('A')
select col,km from dbo.f_go('a')

--刪除環境
drop function f_go
drop table t

-------------------------------迭歸的應用(找起點和終點之間的路徑-----------------------------



--------按類別去最新的前N條記錄,把同一類的放在一起,統計同一類的項的個數等-------------
create table t
(
ClassName varchar(50),
ClassCode varchar(10),
ClassID int identity(1,1)
)
insert into t
select 'cccc1','002' union all
select 'aaaa','001' union all
select 'bbbb','001' union all
select 'aaaa1','002' union all
select 'cccc','001' union all
select 'dddd','001' union all
select 'bbbb1','002' union all
select 'dddd1','002'
select * from t
select ClassCode = (case when exists(select 1 from t t1 where classCode = t1.ClassCode
and ClassID < t1.ClassID)
then '' else ClassCode end),ClassName from t order by ClassCode,ClassID desc

select count(*),classCode from (select top 100 percent ClassCode = (case when exists(select 1 from t t1 where classCode = t1.ClassCode
and ClassID < t1.ClassID)
then '' else ClassCode end),ClassName from t order by ClassCode,ClassID desc)a group by classcode

select classCode,className from t order by classCode,classID desc
drop table t

--------按類別去最新的前N條記錄,把同一類的放在一起,統計同一類的項的個數等-------------


-------------同上,按類別進行統計,把同一類的項的其他內容進行相加并發在一個字段中------------------
create table tb(ProductID varchar(10),PositionID varchar(10))
insert into tb
select '10001','A1'
union all select '10001','B2'
union all select '10002','C3'
union all select '10002','D4'
union all select '10002','E5'
go

create function dbo.fc_str(@ProductID varchar(10))
returns varchar(100)
as
begin
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+cast(PositionID as varchar(20)) from tb where ProductID=@ProductID
return stuff(@sql,1,1,'')
end
go

select ProductID,dbo.fc_str(ProductID) as PositionID from tb group by ProductID

drop table tb

drop function dbo.fc_str

-------------按類別進行統計,把同一類的項的其他內容進行相加并發在一個字段中------------------



--取各個類的前n條記錄(每個類都取top n條)
--如果有數據庫中有多個類,現在要取每個類的前n條記錄,可用以下語句
Create Table TEST
(ID Int Identity(1,1),
h_id Int)
Insert TEST Select 100
Union All Select 100
Union All Select 100
Union All Select 101
Union All Select 101
Union All Select 101
Union All Select 100
GO
--方法一:
Select * From TEST A Where Id In(Select TOP 3 ID From TEST Where h_id=A.h_id)
--方法二:
Select * From TEST A Where Not Exists (Select 1 From TEST Where h_id=A.h_id And ID<A.ID Having Count(*)>2)
--方法三:
Select * From TEST A Where (Select Count(*) From TEST Where h_id=A.h_id And ID<A.ID)<3
GO
Drop Table TEST
GO


--分組統計,統計每個段中數據的個數
--一般成績統計可以用到這個
declare @t table(id int,weight int)
insert into @t select 1, 20
insert into @t select 2, 15
insert into @t select 3, 5
insert into @t select 4, 60
insert into @t select 5, 12
insert into @t select 6, 33
insert into @t select 7, 45
insert into @t select 8, 59
insert into @t select 9, 89
insert into @t select 10,110

declare @p int
set @p=10
select
rtrim(p*@p)+'-'+rtrim((p+1)*@p">p*@p)+'-'+rtrim((p+1)*@p) as p,
num
from
(select (weight/@p">weight/@p) as p,count(*) as num from @t where weight between 10 and 100 group by (weight/@p">weight/@p)) a


----------------------------在in語句中只用自定義排序begin--------------------------------
declare @t table(id int,weight int)
insert into @t select 1, 20
insert into @t select 2, 15
insert into @t select 3, 5
insert into @t select 4, 60
insert into @t select 5, 12
insert into @t select 6, 33
insert into @t select 7, 45
insert into @t select 8, 59
insert into @t select 9, 89
insert into @t select 10,110
--默認in語句中sql會按照id進行排序
select * from @t where id in(2,4,3)
--用此方法可以按照我們傳入的id順序進行顯示數據
select * from @t where id in(2,4,3) order by charindex(rtrim(id),',2,4,3,')

----------------------------在in語句中只用自定義排序end--------------------------------
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人欧美一区二区三区黑人| 国产精品69精品一区二区三区| 日韩高清欧美高清| 最近2019年手机中文字幕| 久久影视电视剧免费网站清宫辞电视| 久热精品视频在线观看一区| 日韩一区二区三区在线播放| 欧美电影免费观看高清完整| 欧美精品久久久久久久久| 日韩精品中文字幕久久臀| 亚洲天堂精品在线| 欧美成人全部免费| 久久精品国产v日韩v亚洲| 都市激情亚洲色图| 国产手机视频精品| 亚洲视频专区在线| 日日狠狠久久偷偷四色综合免费| 久久久久99精品久久久久| 成人国内精品久久久久一区| 亚洲成人精品视频在线观看| 久久九九亚洲综合| 国内精品模特av私拍在线观看| www.99久久热国产日韩欧美.com| 日韩精品在线观看一区| 色综合久久88色综合天天看泰| 日韩在线一区二区三区免费视频| 91久久久久久久久久久久久| 久久精品国产精品| 色噜噜狠狠狠综合曰曰曰88av| 日韩精品极品在线观看播放免费视频| 久久精品2019中文字幕| 免费99精品国产自在在线| 久久国产精品视频| xxxx欧美18另类的高清| 日本一本a高清免费不卡| 中文字幕亚洲一区在线观看| 伊人成人开心激情综合网| 九九热精品在线| 亚洲自拍高清视频网站| 国产精品夜色7777狼人| 777午夜精品福利在线观看| 欧美另类第一页| 日韩欧美亚洲成人| 另类图片亚洲另类| 久久久精品影院| 日韩免费观看在线观看| 日韩av在线影视| 国产999视频| 日韩乱码在线视频| 亚洲精品456在线播放狼人| 亚洲欧洲美洲在线综合| 国语自产精品视频在线看一大j8| 亚洲欧美日本精品| 亚洲成人精品在线| 亚洲免费一级电影| 日韩成人在线视频网站| 九九热最新视频//这里只有精品| 欧美成人中文字幕| 日韩在线视频中文字幕| 亚洲欧美制服第一页| 国产精品久久久久久久7电影| 日韩成人中文字幕| 国外色69视频在线观看| 成人淫片在线看| 国产精品国产三级国产专播精品人| 亚洲韩国欧洲国产日产av| 日韩精品电影网| 欧美午夜精品久久久久久浪潮| 日韩电影中文字幕一区| 国产第一区电影| 成人a免费视频| 亚洲天堂成人在线| 最近2019年日本中文免费字幕| 欧美日韩国产综合视频在线观看中文| 欧美电影免费观看电视剧大全| 亚洲视频专区在线| 国产福利精品在线| 国产精品视频999| 日韩精品视频观看| 亚洲bt天天射| 精品亚洲永久免费精品| 日韩精品在线影院| 国产精品ⅴa在线观看h| 久久影视三级福利片| 国产精品国产三级国产aⅴ9色| 国产精品嫩草视频| 精品国产31久久久久久| 精品国产一区二区三区久久久| 国产成人97精品免费看片| 国产99久久精品一区二区 夜夜躁日日躁| 欧美日韩国产一中文字不卡| 日韩在线观看免费全| 亚洲人成人99网站| 日韩精品在线免费播放| 55夜色66夜色国产精品视频| 欧美激情免费视频| 欧美午夜丰满在线18影院| 日本成熟性欧美| 欧美国产乱视频| 欧美激情中文字幕乱码免费| 国产精品亚洲精品| 26uuu亚洲伊人春色| 日韩在线欧美在线| 日韩在线欧美在线国产在线| 日韩av在线免费观看| 亚洲一区二区三区乱码aⅴ| 成人精品一区二区三区电影免费| 久久这里只有精品99| 一区二区亚洲欧洲国产日韩| 一区二区三区动漫| 亚洲国产精久久久久久久| 亚洲免费中文字幕| 国产精品99久久久久久人| 日本精品久久久久久久| 久久久久久久久中文字幕| 欧美激情免费视频| 亚洲精品视频免费| 精品久久久久久中文字幕| 在线播放亚洲激情| 精品亚洲男同gayvideo网站| 国产高清在线不卡| 日本sm极度另类视频| 久久国产视频网站| 欧美亚洲国产视频小说| 成人免费直播live| 欧美日韩精品在线播放| 成人网在线免费看| 久久在精品线影院精品国产| 国内精品久久久久久久| 欧美贵妇videos办公室| 欧美午夜女人视频在线| 久久不射电影网| 成人久久一区二区| 岛国视频午夜一区免费在线观看| 亚洲999一在线观看www| 亚洲视频免费一区| 亚洲欧美国产制服动漫| 欧美激情区在线播放| 九九热99久久久国产盗摄| 97国产精品视频人人做人人爱| 久久乐国产精品| 亚洲日韩中文字幕| 秋霞av国产精品一区| 欧美在线观看一区二区三区| 精品视频在线播放免| 欧美又大粗又爽又黄大片视频| 伊人久久免费视频| 国产精品盗摄久久久| 中文字幕精品一区二区精品| 久久韩剧网电视剧| 青青草原一区二区| 亚洲性生活视频在线观看| 欧美精品在线极品| 性色av一区二区三区在线观看| 91在线精品播放| 亚洲国产女人aaa毛片在线| 在线观看91久久久久久| 国产视频精品自拍| 久久久久久久爱| 欧美网站在线观看| 欧美日韩国产成人在线| 中文字幕无线精品亚洲乱码一区| 精品欧美国产一区二区三区| 7777kkkk成人观看|