【发布时间】:2020-12-29 00:30:35
【问题描述】:
我需要通过reference_id (ref_id) 从Feed 表中选择所有唯一行
我写了一个请求,但该请求不返回唯一值,而是给出了所有行包括具有相同ref_id 的重复行。
所以选择不能以正确的方式工作
预期:
@Query("SELECT o FROM FeedEntity o WHERE o.referenceId IN (SELECT DISTINCT ol.referenceId FROM FeedEntity ol) AND o.id < :lastId")
List<FeedEntity> getByIdBefore(@Param("lastId") Long lastId, Pageable pageable);
这是为请求映射的类:
public class FeedEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private UserEntity user;
@Enumerated
@Column(name = "type")
private FeedType type;
@Column(name = "ref_id")
private Long referenceId;
@Column(name = "create_time")
private Timestamp createTime;
public FeedEntity(UserEntity user, FeedType type, Long referenceId) {
this.user = user;
this.type = type;
this.referenceId = referenceId;
this.createTime = DateTimeUtil.getCurrentTimestamp();
}
}
本机查询正在运行
SELECT * FROM feed
WHERE id IN (
SELECT DISTINCT MIN(Id)
FROM feed fe
GROUP BY fe.ref_id
)
【问题讨论】:
-
您希望在结果中包含相同
ref_id的所有Feed行吗?
标签: mysql sql spring hibernate hql