式样要求从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 少用子查询
使用连表查询,比较四个表中的字段