首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SELECT 語法完整指南:從條件篩選到分組查詢

     編輯:MySQL 資料庫相關知識

一、條件篩選技巧

MySQL 的 WHERE 子句支援多樣化的篩選方式,掌握這些技巧能大幅提升查詢效率。

1. 數值篩選

直接比較數值欄位,例如查詢單價超過 100 的記錄:

SELECT * FROM sheet1 WHERE 銷售單價 > 100

2. 字串精確匹配

使用單引號包裹字串常數,注意中文欄位名需用反引號:

SELECT * FROM sheet1 WHERE `物品名稱` = '擋泥板'

3. 日期範圍查詢

MySQL 採用 BETWEEN ... AND ... 處理日期區間,格式建議統一為 YYYY-MM-DD:

SELECT * FROM sheet1 WHERE `出庫日期` BETWEEN '2005-01-04' AND '2005-01-10'

4. 多條件組合

透過 AND、OR 邏輯運算子串聯多個條件:

SELECT * FROM sheet1 
WHERE `出庫日期` BETWEEN '2005-01-04' AND '2005-01-10' 
  AND `銷售單價` > 100

5. 模糊查詢

善用 LIKE 配合萬用字元:% 代表任意長度字串,_ 代表單一字元。

SELECT * FROM sheet1 WHERE `物品名稱` LIKE '%扶手%'

6. 變數參數化查詢

應用程式層面建議使用參數綁定,避免 SQL 注入風險:

SET @item = '擋泥板';
SELECT * FROM sheet1 WHERE `物品名稱` = @item

7. IN 運算子簡化多值匹配

SELECT * FROM sheet1 WHERE `物品名稱` IN ('車衣', '扶手箱')

8. 函數輔助篩選

如 LEFT()、RIGHT()、SUBSTRING() 等字串函數可針對特定位置比對:

SELECT * FROM sheet1 WHERE LEFT(`物品代碼`, 3) = '028'

二、欄位投影與排序

1. 全欄位與指定欄位

SELECT * 會回傳所有欄位,生產環境建議明確列出所需欄位以減少網路傳輸:

SELECT `出庫日期`, `物品代碼`, `規格`, `單位` FROM ChuKu

2. 去除重複資料

DISTINCT 關鍵字可過濾重複列:

SELECT DISTINCT `物品代碼` FROM ChuKu

3. 百分比取樣

TOP N PERCENT 適用於大數據集快速預覽(MySQL 實際使用 LIMIT 配合隨機排序):

SELECT * FROM ChuKu ORDER BY RAND() LIMIT 30%

4. 日期格式化輸出

DATE_FORMAT() 或 FORMAT() 可在查詢層直接轉換顯示格式:

SELECT `ID`, DATE_FORMAT(`出庫日期`, '%Y-%m-%d') AS `出庫日` FROM ChuKu

5. 多欄位排序

ASC 升序、DESC 降序可混合使用,配合 LIMIT 取 Top-N:

SELECT * FROM ChuKu 
ORDER BY `出庫日期` ASC, `銷售單價` DESC 
LIMIT 10

三、分組統計與 HAVING 進階

1. 基礎聚合查詢

GROUP BY 搭配 SUM()、COUNT()、AVG()、MAX()、MIN() 等聚合函數:

SELECT `物品代碼`, SUM(`出庫數量`) AS `總出庫量` 
FROM ChuKu 
GROUP BY `物品代碼`

2. 分組後條件過濾

HAVING 子句專門處理聚合後的篩選,不可用 WHERE:

SELECT `物品代碼`, SUM(`出庫數量`) AS `總出庫量` 
FROM ChuKu 
GROUP BY `物品代碼` 
HAVING SUM(`出庫數量`) >= 3

掌握這些 SELECT 核心用法,能應對 90% 以上的業務查詢場景。建議搭配 EXPLAIN 分析執行計畫,持續優化索引與 SQL 結構。

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