首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 查詢語句解析:雙表關聯與條件過濾

     編輯:程式設計綜合問答

原始語句

select * from PM_UserRole where UserID = 1;
select A.*, B.PermName from PM_RolePerm A
inner join PM_Permission B on A.PermCode = B.PermCode
where A.RoleID = 4;

語義解析

  1. 第一句:查詢 PM_UserRole 表中 UserID = 1 的所有欄位,取得該使用者擁有的角色關係。
  2. 第二句:以 PM_RolePerm 為主表(別名 A),內連接 PM_Permission 表(別名 B),連接條件為 PermCode 相等。篩選 RoleID = 4 的角色權限記錄,並輸出權限名稱 PermName。

業務含義

結合兩句,邏輯為:查詢使用者 ID=1 所屬角色(假設為 RoleID=4)對應的所有權限名稱。實際應用中通常會將兩句合併為單一查詢:

select B.PermName
from PM_UserRole UR
inner join PM_RolePerm RP on UR.RoleID = RP.RoleID
inner join PM_Permission P on RP.PermCode = P.PermCode
where UR.UserID = 1;

優化建議

  • 確保 UserID、RoleID、PermCode 上有索引。
  • 避免 select *,明確列出所需欄位減少網路傳輸。
  • 若權限表較大,考慮分頁或快取策略。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved