這是我的表和查詢作爲小提琴。這會產生正確的結果或我正在查找的結果。在這個查詢中,M1是第一位的,然後平方米,你可以在該行看到「......微柱M1內加入微柱平方米......」爲什麼在自聯接中表的順序很重要
SELECT *
FROM microposts m1
INNER JOIN microposts m2
ON m1.ancestry = m2.id AND m2.user_id=1 AND m1.user_id=2
http://sqlfiddle.com/#!2/ec0c88/3
現在,如果你開關M1和M2(即「......微柱平方米內加入微柱立方米......」,在‘原帖’返回(在誰微柱是‘回覆後’的祖先)。
select *
from microposts m2
inner join microposts m1
on m1.ancestry = m2.id and m2.user_id=1 and m1.user_id=2
http://sqlfiddle.com/#!2/ec0c88/2
在我的應用程序中,所有內容都正常工作,我只是想了解自我加入更好一點。因爲我將它們概念化的方式,我不會期望這些結果。
感謝您向我介紹SQLFiddle。它太酷了。
你的第二個查詢有一個額外的'm2.user_id = 1'檢查。所以他們不相同。 – Barmar
您在兩條SQL語句(user_id)中有不同的條件。 –
順便說一下,'ON'子句應該只包含與兩個表相關的條件。單表條件應該在'WHERE'子句中(除了某些外連接的情況外)。 – Barmar