mysql视图不能使用子查询,把子查询做成视图再查询但是视图里的order DESC却不起作用? 400 报错
公司的流程系统需要做查询,几张表分开的,想做成一张视图来用hibernate来做一个查询页面,根据条件查询出结果,但是在做视图的时候就出现难题,我用的sql语句创建视图的时候提示出错,查询了才知道是MySql视图不支持子查询,sql如下:
SELECT `lsi`.`code` AS `CODE`, `lsi`.`name` AS `zxmc`, `lsi`.`zhuanxiantype` AS `zxlx`, `lsi`.`user_bandwidth` AS `dk`, `tu`.`XM` AS `wljl`, `lsi`.`customer_manager_name` AS `khjl`, `lsi`.`construction_id` AS `construction_id`, `lsi`.`creator` AS `jdr`, `lsi`.`created_date` AS `jdsj`, `pd`.`cjsj` AS `fqjssj`, `cp`.`bzmc` AS `dqhj`, `cp`.`cjsj` AS `dqhjkssj`, `cp`.`clr` AS `dqclr` FROM line_some_info lsi LEFT JOIN paidanriqi pd ON lsi.line_id = pd.line_id LEFT JOIN t_user tu ON lsi.net_manager = tu.BH LEFT JOIN (SELECT * FROM (SELECT lbi.line_id, wp.bzmc, rask.cjsj, tu.XM AS clr FROM workflow_rask_list rask JOIN t_user tu ON rask.CLR = tu.BH JOIN Prosess_Sample ps ON rask.bzslbh = ps.bzslbh JOIN workflow_prosess wp ON ps.BZBH = wp.BZBH JOIN Workflow_Prosess_Sample wps ON ps.lcslbh = wps.lcslbh JOIN line_build_info lbi ON wps.item_Id = lbi.line_id ORDER BY rask.cjsj DESC) ff GROUP BY ff.line_id) cp ON lsi.line_id = cp.line_id
我试着将子查询(25行到34行)做成视图1,再把22行到35行cp位置做成视图2,再做1行到35行视图3.但是问题就出来了。
这个查询主要是想查询rask里面多条一样的line_id一致,但是创建时间 cjsj 最新的一条,单独执行这个sql是得到正确结果的。但是一旦做成视图1、2、3的嵌套,在视图1和视图2结合的时候,好像order by DESC 和group by line_id 就不能结合,得到的结果也不是cjsj的倒序。
我是初学者,不知道大家能不能看懂我的问题,求各位大神解答,我该怎么得到正确的结果的视图呢
group、order by 放在最外面处理。######我试过,如果先group再order 得到的结果不正确 我这个sql单独执行可以,转换成视图,嵌套,最后的结果就不一样######mysql表连接,数据量大的话性能比较差。建议建成表模型支撑页面查询。######回复 @折木 : 建成表,group,order的顺序不变,放到外面,别放子查询(视图1,视图2)里。######大哥你说的表模型是什么,有什么关键词吗我去搜索下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。