这是我的表格和查询作为 fiddle 。这会产生正确的结果,或者我正在寻找的结果。在此查询中,m1 首先出现,然后是 m2,正如您在“...microposts m1 inner join microposts m2...”行中看到的那样
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(即“...微帖子 m2 内连接微帖子 m3...”,则会返回“原始帖子”(该微帖子是“回复帖子”的祖先)。
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=105
第二个有:
m2.user_id=1 and m1.user_id=105
显然结果是不同的。
关于sql - 为什么表的顺序在自连接中很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072124/