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

SQL Server 同一張表兩欄位關聯同一張表:別名技巧實戰

     編輯:關於SqlServer

場景

人員表 man 中有 zw_id(職務)與 man_id(主管)兩個外鍵,皆指向 zw 表。需一次查詢同時取出職務名稱與主管姓名。

核心技巧:表別名

SELECT 
    a.man_id,
    a.man_name,
    d.sex_name,
    zw_name,
    c.money
FROM man AS a
LEFT JOIN zw AS b ON a.zw_id = b.zw_id          -- 關聯職務
LEFT JOIN zw AS c ON a.man_id = c.man_id        -- 關聯主管(同一張表,不同別名)
LEFT JOIN xb AS d ON c.sex_id = d.sex_id;       -- 關聯性別表

關鍵點解析

  • 別名隔離:b、c 分別代表同一張 zw 表的不同角色,避免列名衝突。
  • LEFT JOIN 保留主表:即使職務或主管缺失,人員記錄仍會保留,欄位顯示 NULL。
  • 選取列前綴:a.man_name、c.money 明確來源,消除歧義。

擴展:多層級自關聯

若需查詢「主管的主管」,再加一層 LEFT JOIN zw AS e ON c.man_id = e.man_id 即可,別名依序遞增(d、e、f…)保持可讀性。

效能建議

  1. 在外鍵欄位(zw_id、man_id)建立非叢集索引。
  2. 若頻繁查詢,考慮建立視圖或計算欄位物化路徑。

善用表別名,讓自關聯查詢既優雅又高效。

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