簡體   English   中英

SQL查詢有條件地聯接來自不同數據庫的列

[英]SQL Query to conditionally join columns from different databases

我正在將數據從舊數據庫遷移到新數據庫。 我的目標是將用戶的權限從舊數據庫移到新數據庫。 新舊數據庫都已經具有匹配的用戶ID。

問題在於舊數據庫對每個用戶的權限都有多行(例如,根據表第二列中的組織ID,用戶#3可能有5行具有不同的權限集。

我怎樣才能:

僅使用每個用戶的最高權限填充新表(“ Admin”是最高權限,“ Read”權限是最低權限)

OLD_DB USER TABLE:

ID     ORG     ADMIN   EDIT    READ
1       43       0       1      0
1       200      1       0      0
1       76       0       0      1
2       43       0       1      0
2       76       0       0      1

NEW_DB用戶表:

ID     LEVEL
1        0
2        0
3        0
4        0
5        0

NEW_DB用戶表目標:

ID     LEVEL
1      ADMIN
2      EDIT
3      READ
4      READ
5      EDIT

我對用戶的“ ORG”關系不再感興趣,只希望獲得他們的最高權限。

我正在使用Sequel Pro,它可能會在GUI中提供解決方案,但我不知道。 我最近在代碼中僅獲取管理員用戶(沒有運氣)的嘗試是:

SELECT admin FROM old_db.user oldpermission
JOIN scope FROM homestead_test.users newpermission
ON oldpermission.ID = newpermission.ID;
 SELECT ID, CASE WHEN MAX(ADMIN) = 1 THEN 'ADMIN'
                 WHEN MAX(EDIT)  = 1 THEN 'EDIT'
                 WHEN MAX(READ)  = 1 THEN 'READ'
            END as LEVEL
 FROM OLD_DB 
 GROUP BY ID

您可能可以簡化最后一個

 ELSE 'READ'

因為,如果前兩個失敗,那么只有READ權限可用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM