成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

幾個SQL查詢小技巧,你會嗎?

運維 數據庫運維
sql是一個大家都比較關注的熱門話題,無論你在面試,還是工作中,都很有可能會遇到。以下的小技巧能幫助大家!

 [[437309]]

本文轉載自微信公眾號「SQL數據庫開發」,作者丶平凡世界。轉載本文請聯系SQL數據庫開發公眾號。

行列轉換

問題:假設有張學生成績表(tb)如下:

想變成(得到如下結果):

代碼:

  1. WITH tb(姓名,課程,分數) AS 
  2. SELECT N'張三',N'語文',74 
  3. UNION ALL 
  4. SELECT N'張三',N'數學',83 
  5. UNION ALL 
  6. SELECT N'張三',N'物理',93 
  7. UNION ALL 
  8. SELECT N'李四',N'語文',79 
  9. UNION ALL 
  10. SELECT N'李四',N'數學',86 
  11. UNION ALL 
  12. SELECT N'李四',N'物理',88 
  13.  
  14. SELECT 姓名 , 
  15. MAX(CASE 課程 WHEN '語文' THEN 分數 ELSE 0 END) 語文, 
  16. MAX(CASE 課程 WHEN '數學' THEN 分數 ELSE 0 END) 數學, 
  17. MAX(CASE 課程 WHEN '物理' THEN 分數 ELSE 0 END) 物理 
  18. FROM tb GROUP BY  姓名 

分頁

方案一:利用NOT IN和SELECT TOP分頁語句形式

  1. SELECT TOP 10 * FROM TestTable 
  2. WHERE ID NOT IN 
  3. (SELECT TOP 20 ID FROM TestTable ORDER BY ID) 
  4. ORDER BY ID 

方案二:利用ID大于多少和SELECT TOP分頁語句形式

  1. SELECT TOP 10 * FROM TestTable 
  2. WHERE ID > ( 
  3. SELECT MAX(id) FROM  
  4. (SELECT TOP 20 id FROM  
  5. TestTable ORDER BY id) AS T) 
  6. ORDER BY ID 

方案三:利用SQL Server中的特性ROW_NUMBER進行分頁

  1. SELECT * FROM ( 
  2.   SELECT ROW_NUMBER() OVER(ORDER BY ID DESCAS ROWID,* 
  3.   FROM TestTable 
  4. AS mytable where ROWID between 21 and 40 

結果合并

合并重復行

  1. SELECT * FROM A 
  2.  
  3. UNION 
  4.  
  5. SELECT * FROM B 

不合并重復行

  1. SELECT * FROM A 
  2. UNION ALL 
  3. SELECT * FROM B 

隨機排序

  1. SELECT * FROM TestTable ORDER BY NEWID() 

還可以結合TOP取隨機的前N條記錄

  1. SELECT TOP 100 * FROM TestTable ORDER BY NEWID() 

以任意符號分隔取兩邊數據

例如我們以逗號(,)來分割數據,將如下數據

分割成如下圖所示:

  1. SELECT R, 
  2. CASE WHEN  CHARINDEX(',',R)>1 THEN  LEFT(R,CHARINDEX(',',R)-1) ELSE NULL END AS R1 , 
  3. CASE WHEN CHARINDEX(',',R)>1 THEN RIGHT(R,(LEN(R) - CHARINDEX(',',R))) ELSE NULL END AS R2 
  4. FROM  t 

代碼較長,我們對代碼進行拆分來理解:

  1. SELECT  CHARINDEX(',',','--結果是1 
  2. SELECT  CHARINDEX(',','NULL'--結果是0 
  3. SELECT  CHARINDEX(',',''--結果是0 
  4. SELECT  CHARINDEX(',','A,B'--結果是2 
  5. SELECT  LEN('A,B'--結果是3 
  6. SELECT  LEN('A,B') - CHARINDEX(',','A,B'--結果是3-2=1 
  7. SELECT  RIGHT('A,B',( LEN('A,B') - CHARINDEX(',','A,B'))) --結果是 B 

最后一步我們將'A,B'拆分出來了B,同理A我們也可以用類似的方法獲取到。

WAITFOR延時執行

例 等待1 小時2 分零3 秒后才執行SELECT 語句

  1. WAITFOR DELAY '01:02:03' 
  2.  
  3. SELECT * FROM Employee 

其中 DELAY是在延時多長時間后才開始執行。

例 等到晚上11 點零8 分后才執行SELECT 語句

  1. WAITFOR TIME '23:08:00' 
  2. SELECT * FROM Employee 

其中TIME是等到具體某個時刻才開始執行

 

責任編輯:武曉燕 來源: SQL數據庫開發
相關推薦

2022-11-16 09:04:36

SQL查詢SELECT

2022-09-06 08:07:24

SQL語句查詢

2022-04-06 07:32:41

Java運算符變量

2022-03-15 08:36:46

遞歸查詢SQL

2021-02-03 10:46:31

SQL數據庫技巧

2011-01-19 09:07:20

Thunderbird

2020-11-03 14:56:09

手機安全信息泄露漏洞

2024-11-15 10:45:56

2019-04-15 13:24:31

2015-02-04 10:32:57

Objective-CSwift

2022-08-18 10:01:35

Jmeter技巧

2021-02-05 16:20:54

代碼Linux技巧

2009-06-17 15:38:57

java軟件安裝

2020-02-23 23:29:07

Python編程開發

2021-03-12 10:12:09

etState函數React

2009-06-18 11:12:42

Hibernate S優化

2022-06-07 23:28:05

線程安全后端

2011-06-13 17:36:43

外鏈

2011-07-05 14:59:17

java

2023-04-12 08:18:40

ChatGLM避坑微調模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 男女羞羞视频网站 | 亚洲欧美日韩一区二区 | 综合久久综合久久 | 欧美第一页 | 自拍偷拍亚洲视频 | 成人免费毛片在线观看 | 日韩久久久久久久久久久 | 男女午夜激情视频 | 中文字幕在线电影观看 | 亚洲一区二区三区四区五区中文 | 国产国语精品 | 久久国产精品久久久久久 | 日韩精品一区二 | 欧美aaa一级片 | 欧美13videosex性极品 | 最新中文字幕第一页视频 | 在线亚州 | 成人在线免费视频观看 | 亚洲色图综合 | 丁香六月伊人 | 成人精品在线观看 | 97精品国产手机 | 欧美日韩久久精品 | 国产一区不卡 | 国产精品美女久久久 | 亚洲福利在线观看 | 青青久久久 | 在线视频一区二区 | 亚洲综合视频 | 国产免费va| 国产一区二区激情视频 | 久久精品这里精品 | 日本天天色 | 国产精品一区二区av | 1级毛片| 午夜a v电影| 高清欧美性猛交 | 亚洲欧美视频一区 | 久久精品亚洲 | 国产成人精品久久 | 日韩高清一区 |