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

MySQL 刪除指定前綴/精確 ID 資料:LIKE 模糊匹配與等值刪除語法

     編輯:MySQL 資料庫相關知識

DELETE 語句精確刪除與模糊刪除實例

針對字串型主鍵或業務鍵,常見刪除場景:

1. 模糊匹配刪除:前綴匹配

-- 刪除 id 以 'B' 開頭的所有記錄
DELETE FROM table_a WHERE id LIKE 'B%';
  • % 代表任意長度字串 (含空字串)。
  • 若 id 有索引,LIKE 'B%' 可用索引範圍掃描 (type=range);LIKE '%B%' 或 LIKE '%B' 導致全表掃描。
  • 大量刪除建議分批 (如每次 5000 行) 避免長事務鎖表、Binlog 膨脹:
    DELETE FROM table_a WHERE id LIKE 'B%' LIMIT 5000; 循環執行直到影響行數為 0。

2. 精確刪除:單一 ID

-- 刪除 id 精確等於 'B' 的記錄
DELETE FROM table_a WHERE id = 'B';
  • 走主鍵/唯一索引點查 (type=const/eq_ref),極快。
  • 搭配 LIMIT 1 防誤刪:DELETE FROM table_a WHERE id = 'B' LIMIT 1;

3. 進階:IN 列表批次刪除

DELETE FROM table_a WHERE id IN ('B001','B002','B003');
-- 或配合子查詢
DELETE FROM table_a WHERE id IN (SELECT id FROM temp_delete_list);

4. 安全檢查清單 (執行前必做)

  1. SELECT COUNT(*) FROM table_a WHERE id LIKE 'B%'; 確認影響範圍。
  2. 生產環境先 BEGIN; 執行 DELETE → SELECT ROW_COUNT(); 核對 → COMMIT; 或 ROLLBACK;。
  3. 備份目標資料:CREATE TABLE table_a_bak AS SELECT * FROM table_a WHERE id LIKE 'B%';
  4. 大表分批刪除,間隔 SLEEP(1) 減輕主從延遲。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved