[英]Multiple left joins on same table but different rows
我想在同一個表上使用不同的別名進行多個聯接:
Table1
id
1
2
Table2
id pid
1 1
2 1
3 2
4 2
我嘗試了什么
SELECT
t1.id AS ´t1.id´,
t2_1.id AS ´t2_1.id´,
t2_1.pid AS ´t2_1.pid´,
t2_2.id, AS ´t2_2.id´,
t2_2.pid AS ´t2_2.pid´
FROM table1 AS t1
LEFT JOIN table2 AS t2_1 ON t2_1.pid = t1.id
LEFT JOIN table2 AS t2_2 ON t2_2.pid = t1.id
我期望的結果是
t1.id = 1, t2_1.id = 1, t2_1.pid = 1, t2_2.id = 2, t2_2.pid = 1
t1.id = 2, t2_1.id = 3, t2_1.pid = 2, t2_2.id = 4, t2_2.pid = 2
但是我在兩個連接上得到相同的結果。 有沒有一種方法可以使每個聯接使用下一個匹配行而不是第一個? 還是我需要使用多個pid並將它們存儲在t1中?
謝謝 :)
進一步說明一下我的問題:table2應該如何知道它應該用作t2_1並提供3,還是ar t2_2並提供4?
我認為您需要更改:
Table2
id pid
1 1
2 1
3 2
4 2
至
Table2
id pid_1 pid_2
1 1 1
2 1 2
3 2 1
4 2 2
並相應地更改連接。
我以為您可以做到這一點:
SELECT
t1.id AS ´t1.id´,
t2_1.id AS ´t2_1.id´,
t2_1.pid AS ´t2_1.pid´,
t2_2.id, AS ´t2_2.id´,
t2_2.pid AS ´t2_2.pid´
FROM table1 AS t1
LEFT JOIN table2 AS t2_1 ON t2_1.pid = t1.id
LEFT JOIN table2 AS t2_2 ON t2_2.pid = t1.id AND t2_2.id > t2_1.id
對於每個新連接AND t2_2.id > t2_1.id
您都必須使用AND t2_2.id > t2_1.id
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.