一条SQL的写法,菜鸟提问

式样要求从A表里取出所有项目,并且从B,C,D,E 4张表里取出和A表的nodeid相同的device这个字段。

我的想法是用t1 left join (select nodeid ,device from t2 union select nodeid ,device from t3 union select nodeid ,device from t4 union select nodeid ,device from t5) t6 on t1.nodeid = t6.nodeid

这样可以试想需求么,另外性能是不是最优的呢

直接连续几个inner join就行了
select * from A inner join B on B.id=A.id inner join C on C.id=A.id inner join D on D.id=A.id

SELECT
A.*, B.DEVICE, C.DEVICE, D.DEVICE, E.DEVICE
FROM A
LEFT JOIN B ON A.NODEID=B.NODEID
LEFT JOIN C ON A.NODEID=C.NODEID
LEFT JOIN D ON A.NODEID=D.NODEID
LEFT JOIN E ON A.NODEID=E.NODEID

最好直接都用left join 少用子查询

使用连表查询,比较四个表中的字段