偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

6個(gè)SQL查詢(xún)小技巧

數(shù)據(jù)庫(kù) SQL Server
今天我們一起來(lái)看一下6個(gè)SQL查詢(xún)小技巧都有哪些吧!

 1、行列轉(zhuǎn)換

問(wèn)題:假設(shè)有張學(xué)生成績(jī)表(tb)如下:

 

 

 

 

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

 

 

 

 

代碼:

 

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

2、分頁(yè)

方案一:利用NOT IN和SELECT TOP分頁(yè)語(yǔ)句形式

 

  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分頁(yè)語(yǔ)句形式

 

  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進(jìn)行分頁(yè)

 

  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、結(jié)果合并

合并重復(fù)行

 

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

不合并重復(fù)行

 

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

4、隨機(jī)排序

 

  1. SELECT * FROM TestTable ORDER BY NEWID() 

還可以結(jié)合TOP取隨機(jī)的前N條記錄

 

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

5、以任意符號(hào)分隔取兩邊數(shù)據(jù)

例如我們以逗號(hào)(,)來(lái)分割數(shù)據(jù),將如下數(shù)據(jù)

 

 

 

 

分割成如下圖所示:

 

 

 

 

 

  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 

代碼較長(zhǎng),我們對(duì)代碼進(jìn)行拆分來(lái)理解:

 

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

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

6、WAITFOR延時(shí)執(zhí)行

例 等待1 小時(shí)2 分零3 秒后才執(zhí)行SELECT 語(yǔ)句

 

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

其中 DELAY是在延時(shí)多長(zhǎng)時(shí)間后才開(kāi)始執(zhí)行。

例 等到晚上11 點(diǎn)零8 分后才執(zhí)行SELECT 語(yǔ)句

 

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

其中TIME是等到具體某個(gè)時(shí)刻才開(kāi)始執(zhí)行

責(zé)任編輯:華軒 來(lái)源: SQL數(shù)據(jù)庫(kù)開(kāi)發(fā)
相關(guān)推薦

2023-09-25 13:15:50

SQL數(shù)據(jù)庫(kù)

2021-11-29 11:11:45

SQL查詢(xún)技巧

2022-11-16 09:04:36

SQL查詢(xún)SELECT

2015-08-10 09:50:21

ios圖片文本

2017-10-30 17:25:11

javascript

2020-12-24 09:18:51

SQL數(shù)據(jù)庫(kù)函數(shù)

2020-06-03 09:08:21

JavaScript開(kāi)發(fā)代碼

2021-11-10 18:52:42

SQL技巧優(yōu)化

2021-07-23 11:00:18

UI界面設(shè)計(jì)效果

2021-05-29 09:52:15

UI設(shè)計(jì)技巧標(biāo)簽

2021-07-03 08:07:16

UIApp移動(dòng)端

2024-10-28 08:34:06

2009-06-18 11:12:42

Hibernate S優(yōu)化

2011-03-11 16:25:53

Oracle數(shù)據(jù)庫(kù)

2022-09-06 08:07:24

SQL語(yǔ)句查詢(xún)

2016-10-21 16:05:44

SQLSQL SERVER技巧

2010-09-27 15:10:12

SQL Server

2023-10-09 18:13:14

MySQL數(shù)據(jù)庫(kù)查詢(xún)

2024-01-02 18:01:12

SQLSELECT查詢(xún)

2010-11-02 08:58:59

Cassandra
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)