幾個SQL查詢小技巧
問題:假設有張學生成績表(tb)如下:
想變成(得到如下結果):
程式碼:
WITH tb(姓名,課程,分數) AS
(
SELECT N'張三',N'語文',74
UNION ALL
SELECT N'張三',N'數學',83
UNION ALL
SELECT N'張三',N'物理',93
UNION ALL
SELECT N'李四',N'語文',79
UNION ALL
SELECT N'李四',N'數學',86
UNION ALL
SELECT N'李四',N'物理',88
)
SELECT 姓名 ,
MAX(CASE 課程 WHEN '語文' THEN 分數 ELSE 0 END) 語文,
MAX(CASE 課程 WHEN '數學' THEN 分數 ELSE 0 END) 數學,
MAX(CASE 課程 WHEN '物理' THEN 分數 ELSE 0 END) 物理
FROM tb GROUP BY 姓名
2、分頁
方案一:利用NOT IN和SELECT TOP分頁語句形式
SELECT TOP 10 * FROM TestTable
WHERE ID NOT IN
(SELECT TOP 20 ID FROM TestTable ORDER BY ID)
ORDER BY ID
方案二:利用ID大於多少和SELECT TOP分頁語句形式
SELECT TOP 10 * FROM TestTable
WHERE ID > (
SELECT MAX(id) FROM
(SELECT TOP 20 id FROM
TestTable ORDER BY id) AS T)
ORDER BY ID
方案三:利用SQL Server中的特性ROW_NUMBER進行分頁
SELECT * FROM (
SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS ROWID,*
FROM TestTable
) AS mytable where ROWID between 21 and 40
3、結果合併
合併重複行
SELECT * FROM A
UNION
SELECT * FROM B
不合並重復行
SELECT * FROM A
UNION ALL
SELECT * FROM B
4、隨機排序
SELECT * FROM TestTable ORDER BY NEWID()
還可以結合TOP取隨機的前N條記錄
SELECT TOP 100 * FROM TestTable ORDER BY NEWID()
5、以任意符號分隔取兩邊資料
例如我們以逗號(,)來分割資料,將如下資料
分割成如下圖所示:
SELECT R,
CASE WHEN CHARINDEX(',',R)>1 THEN LEFT(R,CHARINDEX(',',R)-1) ELSE NULL END AS R1 ,
CASE WHEN CHARINDEX(',',R)>1 THEN RIGHT(R,(LEN(R) - CHARINDEX(',',R))) ELSE NULL END AS R2
FROM t
程式碼較長,我們對程式碼進行拆分來理解:
SELECT CHARINDEX(',',',') --結果是1
SELECT CHARINDEX(',','NULL') --結果是0
SELECT CHARINDEX(',','') --結果是0
SELECT CHARINDEX(',','A,B') --結果是2
SELECT LEN('A,B') --結果是3
SELECT LEN('A,B') - CHARINDEX(',','A,B') --結果是3-2=1
SELECT RIGHT('A,B',( LEN('A,B') - CHARINDEX(',','A,B'))) --結果是 B
最後一步我們將'A,B'拆分出來了B,同理A我們也可以用類似的方法獲取到。
6、WAITFOR延時執行
例 等待1 小時2 分零3 秒後才執行SELECT 語句
WAITFOR DELAY '01:02:03'
SELECT * FROM Employee
其中 DELAY是在延時多長時間後才開始執行。
例 等到晚上11 點零8 分後才執行SELECT 語句
WAITFOR TIME '23:08:00'
SELECT * FROM Employee
其中TIME是等到具體某個時刻才開始執行
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2928892/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢統計SQL分組求和使用小技巧SQL
- 提高 Laravel Eloquent 查詢的5個小技巧Laravel
- 幾個定位、查詢session的sql語句SessionSQL
- 簡單記錄幾個有用的sql查詢SQL
- 15個高效的MySQL資料庫查詢小技巧MySql資料庫
- Python小技巧 - 子串查詢Python
- 構建Docker幾個小技巧Docker
- pandas 的幾個查詢方法
- Swift開發的幾個小技巧Swift
- 查詢堵塞程式的幾種SQL--SQL
- 一個小操作,SQL查詢速度翻了1000倍。SQL
- 深入 TypeScript – 2( 幾個常用的小技巧)TypeScript
- js前端除錯的幾個小技巧JS前端除錯
- 如何使用SQL查詢檢視,Postico使用技巧分享~SQL
- 提高程式碼顏值的幾個小技巧
- 分享幾個Java面試小技巧,建議收藏!Java面試
- 折騰ChatGLM的幾個避坑小技巧
- php幾個不起眼兒的小技巧薦PHP
- 查詢每個班級前幾名
- 【轉】有關dataguard的幾個查詢
- 幾個查詢系統資訊的命令!
- SQL 兩個表組合查詢SQL
- 30個MySQL千萬級大資料SQL查詢最佳化技巧詳解MySql大資料
- SQL查詢的:子查詢和多表查詢SQL
- Python中使用字典的幾個小技巧Python
- 分享幾個 SpringBoot 實用的小技巧Spring Boot
- Mac小白應該要知道的幾個小技巧Mac
- FireFox的幾個小技巧(提高瀏覽速度)Firefox
- Sql server2005 優化查詢速度50個方法小結SQLServer優化
- 總結幾個查詢論文網址
- 【SQL查詢】集合查詢之INTERSECTSQL
- 提升網站訪問速度的 SQL 查詢優化技巧網站SQL優化
- 原生SQL查詢SQL
- SQL 聚合查詢SQL
- sql 查詢效率SQL
- sql子查詢SQL
- 讓Vue專案更絲滑的幾個小技巧Vue
- 分享幾個掘金專欄文章佈局的小技巧