多个ON和JOIN

时间:2014-02-14 20:53:28

标签: mysql join

我了解到,我可以重写像

这样的查询
SELECT d
FROM tbl1
WHERE a in (
    SELECT  b
    FROM tbl2
    WHERE c = "Something"
)

进入(在我看来更快)查询:

SELECT d
FROM tbl1 LEFT JOIN tbl2
ON tbl1.a = tbl2.b
WHERE tbl2.c = "Something"

但我在重写以下查询时遇到问题:

SELECT name, nick
FROM cu
WHERE uid IN (
    SELECT friend
    FROM cf
    WHERE user IN (
        SELECT uid
        FROM cu
        WHERE sid = "abc"
    )
)

修改

刚刚找到它:Left Join Optimization

1 个答案:

答案 0 :(得分:4)

这应该是等价的:

select cu.*
from cu join
     cf
     on cu.uid = cf.friend join
     cu cu2
     on cu2.uid = cf.user
where cu2.sid = 'abc';

请注意,您只需要内部联接。