问题描述
如题,假设有三个表A,B,C。A需要外连接B,而B要内连接C,sql语句应如何写。在mysql中我是这样写的:select A.* ,B.* ,C.* from A left outer join B on A.id = B.id inner join C on B.name = C.name where ....但是运行时不会得出预期的结果,恳请各位大大指点。 问题补充:hudingchen 写道
解决方案
你把你要的项目加上就可以阿SELECT A.*,M.* FROM A LEFT JOIN (SELECT B.id,B.name,C.id cid,C.name cname FROM B INNER JOIN C ON B.name = C.name) M ON A.id = M.id
解决方案二:
引用有额,比如我再要让A内连接个D之类的。。。这个不又麻烦了么。。如果是这样,你还是老老实实用sub query吧。只是效率不怎么样。从全局上看,如果能不带sub query, 列顺序有变动,也不是什么大问题。
解决方案三:
引用这个就不大好了,因为我是要把A作为主表的,它还要连接其他的表,如D啊、E啊什么的. 只跟返回结果的列顺序有关,还有主次之分吗?呵呵。
解决方案四:
引用但是这样就又重新多判断了一次,所以我想有没有其他更好的方法。 看看上帖
解决方案五:
可能是优先级导致问题,先innerjoin再right join试试,避免使用sub select.用:select B.*, C.*, A.* from B inner join C on B.name = c.name right join A on B.id = a.id
解决方案六:
条件写错了,改下SELECT A.* FROM A LEFT JOIN (SELECT B.* FROM B INNER JOIN C ON B.name = C.name) M ON A.id = M.id
解决方案七:
试一下这个写法SELECT A.* FROM A LEFT JOIN (SELECT B.* FROM B INNER JOIN C ON B.id = C.id) M ON A.id = M.id