普通的BUG记录

SQL语句使用group by,被group的那些数据默认‘顺序’是怎么的?

答案:按照主键的默认排序,并将被聚合数据中的第一条数据作为原字段的值返回。

如果要将此group by后的数据进行一些不同日期下数据的对比,那么应当将group by的聚合指标作为 key来互相比对,这样才能准确的比对到数据。

-----------------------------------2020-03-09 00:00:00数据--- ----------------------------------------

上图是下图5条数据的聚合

-----------------------------------2020-03-10 00:00:00数据--- ----------------------------------------

上图是下图5条数据的聚合

以上两条数据,原来是以聚合后的site id作为对比的key,而导致程序找不到正确的比对对象。要对比的话,必须以groupkeys这个组合字段为key,不能以其他字段,因为数据的默认顺序会影响默认字段的返回值,site id可能返回不同。

这就是前段时间写出的很低级的BUG,因为自认为插入数据库的时候,数据顺序必然会以site id为先后顺序,而用了聚合后取出的site id 作为对比的key,但是这些site id 可能会随着site的变化被删除,被创建,因而这是个十分愚蠢的bug。

你可能感兴趣的:(普通的BUG记录)