在mysql中,可以执行不严格的group by 语句,可以得到看似正常的结果。
select c1,c2,c3,sum(c4) from table1 ;
此时,若再对多个结果进行 union all ,mysql会直接丢弃部分结果集,导致非常诡异的问题出现。
如
select c1,c2,c3,sum(c4) from table1
group by c1,c2,c3
union all
select c1,c2,c3,sum(c4) from table2
此时table2的结果集就会被丢弃,但实际上table2中是包含符合业务含义的数据的。
所以,编写sql一定要严格的按照sql语法来。