假設我有如下表結構:如何基於對列(一個自己SELECT的結果)中選擇數據?
TABLE session
int entity_id
int user_id
int status
TABLE entity_user
int entity_id
int user_id
int target
的session
表由不同的實體不同的用戶登錄互動。 entity_user
表指定哪些用戶有權訪問每個實體。重要的是,每個用戶都可以訪問多個實體。
我想根據一些標準從session
表中選擇(實體,用戶)對,例如。一個特定的狀態。說完這些檢索對,我想查找相應的目標在entity_user
表一對。
有沒有辦法在SQL中乾淨地做到這一點,理想情況下只有一個查詢?
我的解決方案到目前爲止是選擇對,做一些脫機文本處理連接它們(與分隔符),然後使用該文本。因此:
SELECT entity_id, user_id FROM session WHERE status = 100;
-- Returns (101, 234), (204, 157), etc.
-- Post-process this result using # as a separator
SELECT entity_id, user_id, target FROM entity_user
WHERE CONCAT(user_id, '#', entity_id) IN ('101#234', '204#157', ...)
這工作,但我覺得應該是在SQL做這個純方式。有什麼建議麼?
@ e4c5還沒有,但我會。 – dave