java - 是否可以选择 SQL 中的所有列但只选择每第三行?

标签 java sql spring-boot jpa spring-data-jpa

我想选择所有列,但将为每 X 行选择每一行。
例如,如果我想选择所有行,请这样写:

@Transactional
@Query(value = "SELECT * FROM data WHERE job_name = :jobName ORDER BY date_time ASC LIMIT :selectedLimit OFFSET :selectedOffset" , nativeQuery = true)
List<Data> findByJobNameOrderByDateTimeAscLimit(@Param("jobName") String jobName, @Param("selectedOffset") long selectedOffset, @Param("selectedLimit") long selectedLimit);
但我想用“对于每 X 行”或类似的东西来扩展它。那可能吗?

最佳答案

使用java代码过滤器的方法会选择所有数据并对其进行过滤,这不是很有效。
如果您想使用 SQL 实现这一点 - 查询将取决于您使用的方言。
例如在 Oracle 中 - 可以使用 ROWNUM,例如:

select *
  from (select ROWNUM as rn, t.*
        from Table t)
WHERE MOD(rn, 3) = 0 
在上面的代码中-“3”是您问题中的“X”,这意味着“将选择每第三行”
如果您的结果中不需要“RN” - 在上层查询中使用 Select t.*
如果您的数据库方言不支持 ROWNUM - 您可以使用包装查询自己添加它,以下问题应该让您知道如何去做:
When i am using it with db2 for pagination, my next page is giving error

关于java - 是否可以选择 SQL 中的所有列但只选择每第三行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65646936/

相关文章:

java - 防止 Hibernate 关系表被审计

java - 如何获取 java.sql.ResultSet 的大小?

php - 使用相关表中的数据查询设置值

PHP pdo 带日期的复杂查询

java - Vaadin Spring 应用程序无法访问图像

java - 使用 jFreePanel 将年份添加到折线图上的 X 轴

Java/Scala - 响应式(Reactive)流/枚举如何连续读取输入流直到 read() 返回 -1

c# - 如何在 nhibernate 查询中添加 groupby?

java - 我可以只启用 Spring Session header 身份验证吗?

java - 如何使用maven生成JAR