簡體   English   中英

同一張桌子上有多個左聯接但行不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM