首頁 資料庫 SQL 悄悄分享6個SQL查詢小技巧

悄悄分享6個SQL查詢小技巧

Feb 26, 2021 am 09:57 AM
sql查詢

悄悄分享6個SQL查詢小技巧

推薦(免費):SQL教學

1、行列轉換

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

悄悄分享6個SQL查詢小技巧

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

悄悄分享6個SQL查詢小技巧

程式碼:

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、以任意符號分隔取兩邊數據

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

悄悄分享6個SQL查詢小技巧

分割成如下圖:

悄悄分享6個SQL查詢小技巧

#
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是等到特定某一時刻才開始執行

我是岳哥,最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行数据前线
——End——

后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。
推荐阅读
27岁发明SQL以后,上帝把他带走了

微信8.0不好玩?那可能是你打开方式不正确!

一个员工的离职成本有多恐怖!
SQL养成这些好习惯是一笔财富
MySQL基本知识点梳理和查询优化
登入後複製

更多相關免費學習推薦:SQLserver

以上是悄悄分享6個SQL查詢小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1226
24
美團面試題:慢SQL有遇過嗎?是怎麼解決的? 美團面試題:慢SQL有遇過嗎?是怎麼解決的? Aug 24, 2023 pm 03:41 PM

MySQL的慢查詢日誌是MySQL提供的一種日誌記錄,它用來記錄MySQL中查詢時間超過(大於)設定閾值(long_query_time)的語句,記錄到慢查詢日誌中。

PHP和PDO: 如何執行複雜的SQL查詢語句 PHP和PDO: 如何執行複雜的SQL查詢語句 Jul 28, 2023 pm 03:43 PM

PHP和PDO:如何執行複雜的SQL查詢語句在處理資料庫操作時,PHP提供了一個強大的擴充函式庫PDO(PHPDataObjects),用於簡化與資料庫的互動。 PDO支援多種資料庫,如MySQL、SQLite等,同時也提供了豐富的功能和方法,方便開發人員進行各種資料庫操作。本文將介紹如何使用PDO執行複雜的SQL查詢語句,並附上對應的程式碼範例。連接資料庫

PHP程式設計有哪些常見的表格操作? PHP程式設計有哪些常見的表格操作? Jun 12, 2023 am 09:46 AM

在Web開發中,表格是最基本也是最常用的一個元素,而PHP是一種流行的伺服器端程式語言,在表格操作中有許多常見的技巧和方法。本文將介紹PHP程式設計中常見的表格操作。顯示資料表格在PHP中,可以使用HTML中的表格標籤來顯示資料表格,值得注意的是,表格必須在PHP腳本中產生。以下是基本的HTML表格標籤範例:<table><tr>

PHP查詢語句使用範例 PHP查詢語句使用範例 Mar 23, 2024 am 11:27 AM

PHP是一種功能強大的伺服器端腳本語言,廣泛應用於Web開發。在Web開發中,我們常常需要與資料庫互動,執行查詢語句來取得資料。本文將為您介紹PHP中如何編寫查詢語句以及使用範例。 1.連接資料庫在使用PHP進行資料庫查詢之前,首先需要建立與資料庫的連線。一般情況下,我們會使用MySQL資料庫作為範例,連接資料庫的程式碼如下:$servername=

為什麼我的Go程式在執行SQL查詢時出錯? 為什麼我的Go程式在執行SQL查詢時出錯? Jun 09, 2023 pm 06:10 PM

在Go語言程式設計中,使用SQL查詢是常見的任務。然而,有時在執行SQL查詢時會出現錯誤,導致程式無法正確執行。為了解決這些錯誤,我們需要深入了解SQL查詢和Go語言的互動方式。以下是一些可能出現的錯誤和對應的解決方法。缺少資料庫驅動在Go語言中,您需要使用特定的資料庫驅動程式來連接和操作資料庫。如果您嘗試執行資料庫查詢,而未正確安裝和設定該資料庫驅動程式

如何在PHP開發中最佳化SQL查詢語句和索引使用? 如何在PHP開發中最佳化SQL查詢語句和索引使用? Nov 02, 2023 pm 12:12 PM

如何在PHP開發中最佳化SQL查詢語句和索引使用?在PHP開發中,資料庫查詢是非常常見的操作。然而,當資料量增加時,查詢效能可能受到影響,導致應用程式變慢。為了提高查詢效能,我們需要最佳化SQL查詢語句和索引的使用。本文將介紹一些最佳化技巧和最佳實踐,以協助您在PHP開發中提升SQL查詢效能。一、使用正確的索引:索引是資料庫中提高查詢效能的重要組成部分。在設計數據

PHP程式設計中的多數SQL查詢效率最佳化實踐 PHP程式設計中的多數SQL查詢效率最佳化實踐 Jun 23, 2023 am 10:37 AM

隨著網路技術的發展,PHP程式設計已經成為了許多公司網站開發的主流。在PHP程式設計中,SQL查詢效率是需要每個程式設計師關注與處理的問題。 SQL查詢效率低會導致網站反應緩慢、系統負載過高或產生其他不友善的效果。因此,本文將著重介紹PHP程式設計中多種SQL查詢效率最佳化實踐,以提高程式的執行效率和整個系統的回應速度。資料庫索引資料庫索引是提高資料庫查詢速度的一種基本方法

PHP語言開發如何處理SQL查詢錯誤? PHP語言開發如何處理SQL查詢錯誤? Jun 09, 2023 pm 06:13 PM

PHP語言是一種常用的伺服器端腳本語言,用於網站開發等領域。在PHP語言開發中,SQL查詢是常見的操作,但由於各種原因,SQL查詢可能會出現錯誤。因此,開發人員需要在程式碼中處理這些錯誤,以確保應用程式的穩定性和正確性。一般來說,在PHP語言中處理SQL查詢錯誤有以下幾種常見的方式:1.使用try/catch區塊處理異常在PHP語言中,可以使用try/catch

See all articles