首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 簡單查詢實戰匯總:EOMONTH、HAVING vs WHERE、INSERT TOP、COUNT DISTINCT

     編輯:關於SqlServer

彙整四個實用查詢技巧:月底日期查詢新函數、HAVING/WHERE 差異、INSERT TOP 效能、COUNT DISTINCT/ALL 行為。

一、EOMONTH:輕鬆取得月份最後一天

舊寫法需 DATEADD(MONTH, DATEDIFF(MONTH, '19991231', date), '19991231'),SQL Server 2012+ 直接用:

WHERE orderdate = EOMONTH(orderdate)

簡潔、可讀、效能相同。

二、HAVING vs WHERE 核心差異

比較項WHEREHAVING
適用陳述式SELECT/UPDATE/DELETE僅 SELECT
執行順序GROUP BY 之前GROUP BY 之後
彙總函數不可直接使用可直接使用

口訣:WHERE 過濾列,HAVING 過濾群組/彙總。

三、INSERT TOP 效能比較

-- 方案一:SELECT TOP 先排序再取前 N
INSERT INTO Target SELECT TOP (2) ID FROM Source ORDER BY ID DESC

-- 方案二:INSERT TOP 直接取前 N(忽略 ORDER BY)
INSERT TOP (2) INTO Target SELECT ID FROM Source ORDER BY ID DESC

實測方案二開銷較低,但不保證順序。需有序插入請用方案一。

四、COUNT(DISTINCT) vs COUNT(ALL)

  • COUNT(欄位) ≡ COUNT(ALL 欄位):統計非 NULL 個數(含重複)
  • COUNT(DISTINCT 欄位):統計非 NULL 不重複值個數
  • ALL 為預設關鍵字,可省略

掌握這些細節,能寫出更精確、高效的查詢語句。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved