使用distinct
在使用distinct去重的时候,单列是挺好用的,但是多列的时候,就会有一点问题。
首先我想要做的效果是简单的数据去重,但是想要针对一个列来去重,其他列不需要去重,一开始是这样写的:
|
可以查,但是他是针对多列来去重的,意思就是说,并不只针对sample_id来去重,而是针对sample_id,id,name这三个字段来去重。这不是我想要的效果。
使用group by
然后在sql上解决是有办法的,就是通过group by语句来做。
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。
一开始是这样写的,但是会列出所有的结果,问题出在sample_id这个列。
|
应该这样写,id是主键。
|
这样也是可以实现效果的。
在业务层代码自己处理
这种方法就是通过复写equal和hashCode方法来实现去重,这样也是可以实现效果的。