问题描述
假如有5张表 tblA,tblB,tblC,tblD,tblE;现在tblA是主表,其他表都是关系它的,设想如下:先查询出tblA的数据:select tblA.col1,null as 'tblB_col1',null as 'tblC_col1',null as 'tblD_col1',null as 'tblE_col1' from tblA 这个语句出来的结果放入map中,然后为null列补值,null列的数据来源于其余表:select tblB.col1 from tblB where tblB.key in (tblA.id)select tblB.col1 from tblC where tblB.key in (tblA.id)...不知道大家有没有好的建议? 问题补充:283433775 写道
解决方案
其实我想你也可以使用试图view来做,同样如果你真要用临时表的话,请使用存储过程,在数据库中建立临时表,然后塞入数据,再查询。 不能使用这种内存临时表的方式。
解决方案二:
引用数据量确实是个问题,其实视图我已经写好了,只是被否定了,哎,悲剧啊,难道你们老大的水平就是让你补值?不能跟它分析情况,让他给你种好方案吗?
解决方案三:
个人觉得,join可能会带来大数据量的问题,但是你把每个表都加载到内存,这也是大得问题。用一条sql做得话,检索起来会慢一些,但是我想应该不会由太多内存消耗,如果用你的方式,查询到内存表中的,那么如果有个表数据量太大,直接就是崩溃啊。
解决方案四:
用程序来实现当然是可以的, 但是这样你要对每个结果集进行遍历, 如果是大数据量的情况下,性能也好不到哪里去,一样要占用很大的内存开销的,你的需求是不是A表符合条件的数据都要出来?还是有一条语句来实现比较好
解决方案五:
请问为何不用一条语句搞定,你完全可以用一条语句搞定,然后用case when 来把横表转为纵表。