继续请教mysql查询语句:多表联合查询,如何限定右侧的表如果有对应记录则加入特定的where限制或者limit限制,反之则不加限制
程序员文章站
2022-05-24 14:54:14
...
如题
6表联合查询,目前用的还是a left join b left join c left join d left join e left join f这样的
为了保证 a表中的每一条记录 在bcedf表中最多只找到一条对应 要加一些条件
但是加了诸如where f.aaa in ( 0 ,1 ,2 ,3)这样的限制后, 查询的结果 全部是 有f表中有对应记录的
希望能把f表中没有对应记录的也查出来 该怎么修改语句呢?
另外在问另一个问题 假设就算加了这样的条件,becdf表中还是有多条,能否在这一条sql语句中限定比如f表只查最新的一条,以防止a表记录在结果中重复出现
6表联合查询,目前用的还是a left join b left join c left join d left join e left join f这样的
为了保证 a表中的每一条记录 在bcedf表中最多只找到一条对应 要加一些条件
但是加了诸如where f.aaa in ( 0 ,1 ,2 ,3)这样的限制后, 查询的结果 全部是 有f表中有对应记录的
希望能把f表中没有对应记录的也查出来 该怎么修改语句呢?
另外在问另一个问题 假设就算加了这样的条件,becdf表中还是有多条,能否在这一条sql语句中限定比如f表只查最新的一条,以防止a表记录在结果中重复出现
回复讨论(解决方案)
一个结果需要通过6各表连接查询,应该说是你的表设计有问题
可先按关联键形成几个过渡表,以减少表间的影响
6表查询,这个生成多大的笛卡尔积啊,反正我是卡死了
因为要生成实时的报表... 所以涉及的业务比较多...
当然,这肯定是前期设计有问题 只是现在没办法推倒重做
1、我上面已经讲了,查询时先产生过渡表,再对过渡表查询
2、通过视图将原来不合理的设计变成合理的设计,查询对视图进行
已解决 加了 f.id is null
上一篇: 文件内容操作的分页类
下一篇: php简单实现MVC,phpmvc