1
(對不起我的英文不好,我會盡量最清晰)獲取X結果與多個表
我想選擇5個對話(在一個不確定的數字,可能有5個或300對話)的一個用戶在MySQL表中,並且對於其中的每個用戶,我想選擇所有在其中通話的用戶。
在一個奇妙的世界中,我想用一個查詢來完成它。
我的查詢看起來像(表是在法國,PLZ不要傷害我):
SELECT mc.mc_id, mc.mc_sujet, mc.mc_statut,
miu.mi_ustatut as uself_statut, miu.mi_datelecture as uself_datelecture,
mi.mi_uid, mi.mi_ustatut, mi.mi_datelecture,
u.u_pseudonyme
FROM msg_individus as miu
LEFT JOIN msg_conversations as mc ON mc.mc_id = miu.mi_mcid
LEFT JOIN msg_individus as mi ON mi.mi_mcid = mc.mc_id
LEFT JOIN u_individus as u ON u.u_id = mi.mi_uid
WHERE miu.mi_uid = :u_id
哪裏msg_individus
是表與會話的參與者, msg_conversations
是會話(ID的表,主題,狀態), u_individus
是包含用戶信息的表格。
只選擇5這些談話中,我又補上一句
GROUP BY mc.mc_id,
LIMIT 0,5
但當然,每個會話只能有一個用戶給出的這個樣子。
我也試着寫GROUP BY mc.mc_id, mi.mi_uid
但這吧,像沒有書面方式在GROUP BY條件,返回5次迭代,如:
(Conversation 1 has two users, conversation 2 has one, conversation 3 has four)
Iteration 1 : conversation 1, user 1
Iteration 2 : conversation 1, user 2
Iteration 3 : conversation 2, user 1
Iteration 4 : conversation 3, user 1
Iteration 5 : conversation 3, user 2
我想要的是得到5個交談的所有提交的數據(無論什麼數用戶等)
我想我將不得不使用兩個查詢(獲得5個對話後,我會得到每個對話的用戶),但也許你們可以用你的知識點亮我。
Thx。
它似乎按預期工作!對於我的信息(因爲我是一個noob),爲什麼內連接比外連接好?無論如何,這就是Thx! – Vae
@Vae。 。 。有兩個原因。首先是你應該使用最符合你意圖的「加入」。第二個是內部聯接爲優化器提供了更多優化性能的機會。 –
Thx很多爲您的信息。非常好。 – Vae