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

MySQL INNER JOIN 實戰:多表查詢、更新、刪除範例

     編輯:MySQL 資料庫相關知識

    場景:三表關聯 (圖片、派工、設備)

    qdgl_tupian (圖片) ← qdgl_pqb (派工) → isa_gtxx (設備)

    1. 多表條件查詢

    SELECT
        tp.tp_id, tp.tpmc, tp.leveid, tp.tpdz, tp.jgm, tp.scsj,
        tp.pbzyid, tp.ksbfsj, tp.jsbfsj, tp.status, tp.tpbz
    FROM qdgl_tupian tp
    INNER JOIN qdgl_pqb pq ON tp.tp_id = pq.tpid
    WHERE pq.bfjgm = '27010825'
      AND pq.ps_bfsj >= '2013-01'
      AND pq.ps_bfsj < '2013-05-31';

    2. 多表關聯更新

    UPDATE jx_lsjl jx
    INNER JOIN isa_gtxx gt ON jx.ckid = gt.gtbh
    SET jx.ckid = gt.gtid
    WHERE gt.jgm = '27010825'
      AND jx.jgm = '27010825';

    語法要點: UPDATE 目標表 別名 INNER JOIN 來源表 別名 ON 關聯條件 SET 目標欄位 = 來源欄位 WHERE 過濾條件

    3. 多表關聯刪除

    DELETE jx
    FROM jx_lsjl jx
    INNER JOIN isa_gtxx gt ON jx.ckid = gt.gtbh
    WHERE gt.jgm = '27010825'
      AND jx.jgm = '27010825';

    語法要點: DELETE 目標表別名 FROM 目標表 別名 INNER JOIN ... WHERE ...,DELETE 後僅寫要刪除的目標表別名。

    對比:LEFT JOIN vs INNER JOIN

    • INNER JOIN:僅保留雙方都匹配的行 (交集)
    • LEFT JOIN:保留左表所有行,右表無匹配則 NULL
    • 更新/刪除通常用 INNER JOIN 確保精準匹配

    效能提示

    • 關聯欄位 (tp_id, gtbh, jgm) 必須有索引
    • EXPLAIN 確認 type=ref 或 eq_ref,避免 ALL 全表掃描
    • 大表驅動小表:小結果集表放左側 (MySQL 8.0+ 優化器自動調整)
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved