我有一堆表組合在一起,每個表都有一個包含某種形式的user_id. 這導致user_id總共 12 列。
我想將這些user_id列user_id中的每一個與映射表中的一列連接起來,以便檢索username每個用戶 ID。
所以(假設我有 5user id列),
輸入:
My Combined Tables Result:
t1.user_id t2.user_id t3.user_id t4.user_id t5.user_id
1 2 3 4 5
Mapping Table:
user_id username
1 A
2 B
3 C
4 D
5 E
輸出:
t1.username t2.username t3.username t4.username t5.usernamne
A B C D E
我的代碼看起來像:
SELECT m1.username, m2.username, m3.username, m4.username, m5.username
FROM {join logic for 5 tables here}
JOIN mapping m1
ON t1.user_id = m1.user_id
JOIN mapping m2
ON t2.user_id = m2.user_id
JOIN mapping m3
ON t3.user_id = m3.user_id
JOIN mapping m4
ON t4.user_id = m4.user_id
JOIN mapping m5
ON t5.user_id = m5.user_id
我意識到這是非常低效的,特別是對于 12 列,這意味著 12JOIN秒。有沒有更好或更快的方法來做到這一點?謝謝!
uj5u.com熱心網友回復:
您可能會發現為每個用戶名使用相關子查詢更容易,尤其是在您必須實作許多列的情況下,因為它更容易剪切 n 粘貼!
就像是:
select
(select Username from Mapping m where m.UserId = t.UserId1) Username1,
(select Username from Mapping m where m.UserId = t.UserId2) Username2,
(select Username from Mapping m where m.UserId = t.UserId3) Username3 etc
from InputTable t
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/426916.html
上一篇:Laravel8Delete函式不會拋出錯誤但不起作用
下一篇:填充NULL并獲得不同的記錄
