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

6個SQL查詢小技巧

數據庫 SQL Server
今天我們一起來看一下6個SQL查詢小技巧都有哪些吧!

 1、行列轉換

問題:假設有張學生成績表(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  姓名 

2、分頁

方案一:利用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 

3、結果合并

合并重復行

 

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

不合并重復行

 

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

4、隨機排序

 

  1. SELECT * FROM TestTable ORDER BY NEWID() 

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

 

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

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

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

 

 

 

 

分割成如下圖所示:

 

 

 

 

 

  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我們也可以用類似的方法獲取到。

6、WAITFOR延時執行

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

 

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

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

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

 

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

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

責任編輯:華軒 來源: SQL數據庫開發
相關推薦

2023-09-25 13:15:50

SQL數據庫

2015-08-10 09:50:21

ios圖片文本

2017-10-30 17:25:11

javascript

2020-12-24 09:18:51

SQL數據庫函數

2021-11-29 11:11:45

SQL查詢技巧

2022-11-16 09:04:36

SQL查詢SELECT

2020-06-03 09:08:21

JavaScript開發代碼

2021-11-10 18:52:42

SQL技巧優化

2021-05-29 09:52:15

UI設計技巧標簽

2021-07-03 08:07:16

UIApp移動端

2021-07-23 11:00:18

UI界面設計效果

2024-10-28 08:34:06

2009-06-18 11:12:42

Hibernate S優化

2011-03-11 16:25:53

Oracle數據庫

2022-09-06 08:07:24

SQL語句查詢

2016-10-21 16:05:44

SQLSQL SERVER技巧

2010-09-27 15:10:12

SQL Server

2023-10-09 18:13:14

MySQL數據庫查詢

2024-01-02 18:01:12

SQLSELECT查詢

2010-11-02 08:58:59

Cassandra
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区四区 | 青青伊人久久 | 国产99热在线 | 91传媒在线观看 | 中文字幕不卡在线观看 | 精品国产一区二区在线 | 最新日韩在线 | 亚洲在线电影 | 91视频精选 | 日韩成人一区 | 欧美成人激情视频 | 日韩有码一区 | 亚洲欧美一区二区在线观看 | 欧美激情久久久 | 国产一区二区视频免费在线观看 | 国产有码 | 中文视频在线 | 涩涩视频在线观看 | 欧美日韩国产高清 | 在线91| 日韩一区二区三区视频在线观看 | 91 在线| 欧美 日韩 中文 | 99久久中文字幕三级久久日本 | 久久成人综合 | 精国产品一区二区三区四季综 | 91精品在线看 | 一区二区三区高清 | 国产一区二区视频免费在线观看 | 日本电影免费完整观看 | 羞羞网站免费观看 | 欧美日韩在线综合 | 久久久蜜桃| 国产在线资源 | 日韩欧美在线视频播放 | 日韩欧美在线视频 | 日韩在线免费 | 在线免费国产 | 淫片一级国产 | 国产精品日韩欧美一区二区三区 | 成人av播放 |