Im循環訪問論壇帖子列表,從兩個表中提取數據,posts
和members
。mySql加入 - 來自同一個表的多條記錄
我使用的是LEFT JOIN
像
SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id
這一切工作正常。但我也需要從成員表中取得不同的記錄,即p.lastposter
。我將如何做到這一點?我無法在其中添加另一個JOIN,因爲我已經拉動了m.name
,難道不會讓它混淆嗎?
Im循環訪問論壇帖子列表,從兩個表中提取數據,posts
和members
。mySql加入 - 來自同一個表的多條記錄
我使用的是LEFT JOIN
像
SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id
這一切工作正常。但我也需要從成員表中取得不同的記錄,即p.lastposter
。我將如何做到這一點?我無法在其中添加另一個JOIN,因爲我已經拉動了m.name
,難道不會讓它混淆嗎?
如果你想2個不同的rows
你可以使用UNION
:
SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.poster=m.id
UNION
SELECT m.name, p.title FROM posts LEFT JOIN members m ON p.lastposter=m.id
如果你想在同一row
更多信息從lastposter
做到這一點:
SELECT m.name, p.title, lp.name AS lastposter
FROM posts AS p
LEFT JOIN members AS m ON p.poster=m.id
LEFT JOIN members AS lp ON p.lastposter = lp.id
我可以我可以添加另一個JOIN,因爲我已經拉了一個m.name,不會混淆它嗎?
號
SELECT m.name, p.title, lastpostMembers.name AS lastpostername FROM posts AS p
LEFT JOIN members m ON p.poster=m.id
LEFT JOIN members lastpostMembers ON p.lastposter=lastpostMembers.id
我真的不明白爲什麼留給你雖然加盟這裏;好像你真的想要一個內部連接。
您可以添加其他加入了不同的別名:
SELECT m.name, p.title, lp.name AS lastposter
FROM posts AS p
LEFT JOIN members AS m ON p.poster=m.id
LEFT JOIN members AS lp ON p.lastposter = lp.id
感謝,我已經做了第2個方法,但得到一個錯誤,當我在最後加一個限制。我想限制它從'posts'找到的記錄 – user1022585 2012-01-06 15:39:25
你可能想要UNION ALL在這裏,不是嗎? – 2012-01-06 15:49:52
@BillyONeal它取決於:) – 2012-01-06 16:50:27