我想选择所有列,但将为每 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/