SqlServer常用語句

首先,寫這個(gè)的原因是我其實(shí)sql語句不太行,總覺得自己寫得很亂,好像也沒有系統(tǒng)學(xué)習(xí)過,借此復(fù)習(xí)和與大家探討

No.1 關(guān)于查詢時(shí)間區(qū)間是否重疊的sql語句

問題是這樣:插入之前,想查詢同User是否其他請(qǐng)求時(shí)間重疊
表(Id,UserId,F(xiàn)romDate,ToDate,Reason)

select * from Request
where 
    UserId=@UserId
and 
(
    FromDate between @fromDate and @toDate
or
    ToDate between @fromDate and @toDate
or
    @fromDate between FromDate and ToDate
or
    @toDate between FromDate and ToDate
);
--select出來有東西就是有記錄與@fromDate和@toDate之間重疊

后來想想有

select * from Request
where 
    UserId=@UserId
and 
(
    FromDate > @toDate--在原有時(shí)間段之前
or
    ToDate < @fromDate--在原有時(shí)間段之后
)
--搜出來的就是不重疊時(shí)間的記錄

No.2 三種SqlServer分頁查詢語句

1)Top not in(等于查兩次,性能不好)

declare @page int = 1;      --頁碼
declare @pagesize int = 5;  --每頁數(shù)

SELECT TOP (@pagesize) * FROM Campaign
WHERE Id NOT IN 
(
SELECT TOP ((@page-1)*@pagesize) Id FROM Campaign
ORDER BY Id
)
ORDER BY Id

2)ROW_NUMBER() OVER()方式(也是select兩次,不過查詢靠后的數(shù)據(jù)速度比上一種快點(diǎn))

declare @page int = 1;      --頁碼
declare @pageSize int = 5;  --每頁數(shù)

SELECT * FROM 
(SELECT * ,ROW_NUMBER() OVER (ORDER BY Id) AS RowNum FROM Campaign) as T1
WHERE RowNum BETWEEN (@page-1)*@pageSize and @page*@pageSize

3)offset fetch next(速度比上面的快,但sql2012以上才可以用)

declare @page int = 2;      --頁碼
declare @pageSize int = 3;  --每頁數(shù)

SELECT * FROM Campaign
order by Id
OFFSET (@page-1)*@pageSize ROWS FETCH NEXT @pageSize ROWS ONLY

No.3 復(fù)制表中數(shù)據(jù)

Insert into table(field1,field2,...) values(value1,value2,...)這種插入經(jīng)常用到。
但我們也經(jīng)常有一種情況,將一個(gè)表數(shù)據(jù)的部分字段復(fù)制到另一個(gè)表中。
兩種方式,有所區(qū)別:
1)INSERT INTO SELECT語句
(要求目標(biāo)表Table2必須存在)

INSERT INTO Table2(a,c,d) SELECT a,c,5 from Table1

2)SELECT INTO FROM語句
(要求目標(biāo)表Table2不存在,因?yàn)樵诓迦霑r(shí)會(huì)自動(dòng)創(chuàng)建表Table2,并將Table1中指定字段數(shù)據(jù)復(fù)制到Table2中)

SELECT a,c into Table2 from Table1

No.4 存在就更新,不存在就插入

用 exists 作為 if 判斷條件,判斷是否查詢出東西 ①有東西則存在,就進(jìn)行更新 ②沒有的話就進(jìn)行插入操作

IF EXISTS(SELECT * FROM table WHERE Id=@Id )
BEGIN
    UPDATE XXX
END
ELSE
BEGIN
    INSERT XXX
END
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,990評(píng)論 0 10
  • 50個(gè)常用的sql語句 Student(S#,Sname,Sage,Ssex) 學(xué)生表 Course(C#,Cna...
    最美的太陽WW閱讀 3,421評(píng)論 0 23
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,628評(píng)論 18 399
  • 春宵苦短,紅燭帳暖。 第二日清晨時(shí),我從夢(mèng)中醒來,身邊早已空空的了,不見長(zhǎng)平王身影。只聽得外間里昨日迎親時(shí)的喜娘丫...
    穿堂而過的流影閱讀 266評(píng)論 1 2
  • 你害怕什么? 你看了害怕那小小的毛毛蟲嗎 害怕那寂靜的黑夜嗎 害怕那無人的孤獨(dú)嗎 可你知道我害怕什么嗎 我害怕我不...
    悲言閱讀 205評(píng)論 0 1

友情鏈接更多精彩內(nèi)容