如何通过在spring数据本机查询或存储库中传递userIds列表来获取用户的最大日期时间戳
Posted
技术标签:
【中文标题】如何通过在spring数据本机查询或存储库中传递userIds列表来获取用户的最大日期时间戳【英文标题】:How to get max datetimestamp of a user by passing list of userIds in spring data native query or by repository 【发布时间】:2020-10-01 21:51:25 【问题描述】:我有一个表transactions,所有交易详情都将存储如下,
+----+-------------+---------------------+---------------------+
| id | merchant_id | amount | requested_timestamp |
+----+-------------+---------------------+---------------------+
| 1 | 5 | 10 | 2020-06-02 01:47:47 |
| 2 | 5 | 20 | 2020-06-02 05:00:14 |
| 3 | 744900 | 30 | 2020-06-02 05:00:27 |
| 4 | 154427 | 100 | 2020-06-02 05:01:03 |
| 5 | 504968 | 15 | 2020-06-02 05:01:26 |
| 6 | 75703 | 20 | 2020-06-02 05:01:31 |
| 7 | 732228 | 50 | 2020-06-02 05:01:59 |
| 8 | 506342 | 25 | 2020-06-02 05:02:17 |
| 9 | 504968 | 40 | 2020-06-02 05:02:36 |
| 10 | 732228 | 30 | 2020-06-02 05:02:50 |
+----+-------------+---------------------+---------------------+
我想在一次点击中找到每个商家的最大时间戳,例如将 merchantId 列表 传递给查询。 我尝试使用如下弹簧数据
List<Transactions> findTop1ByMerchantIdInOrderByIdAsc(List<Integer> merchantIds);
但它没有给出最大时间戳。
我尝试如下
@Query("select merchantId,max(requestedTimestamp) from Transactions where merchantId in ?1")
List<Object[]> getLastTxnsOfAllMerchants(List<Integer> merchantIds);
这给出了例外。
即使使用 本机查询,我的问题也将如下解决
@Query(nativeQuery=true,value="select merchant_id,max(requested_timestamp) from transactions where merchant_id in ?1")
List<Object[]> getLastTxnsOfAllMerchants(List<Integer> merchantIds);
这也给出了异常
请帮我解决这个问题,谢谢。
【问题讨论】:
【参考方案1】:你可以像这样运行查询
SELECT merchant_id, MAX(requested_timestamp) FROM transactions
GROUP BY merchant_id;
或者如果你想要特定的商家
SELECT merchant_id, MAX(requested_timestamp) FROM transactions
WHERE merchant_id IN (1, 2, 3)
GROUP BY merchant_id;
希望这会有所帮助:)
【讨论】:
谢谢,但我不想在此使用 Group by。没有 group by 有可能吗? 则可以跳过group by,对每个商户进行一次查询;从交易中选择商家 ID,MAX(requested_timestamp),其中商家 ID = 1;以上是关于如何通过在spring数据本机查询或存储库中传递userIds列表来获取用户的最大日期时间戳的主要内容,如果未能解决你的问题,请参考以下文章
我将如何在 Spring 数据存储库中编写 SELECT TOP 25 sql 查询
未绑定命名参数:Spring Boot 中的 DATE_FORMAT 本机查询
java - 如何在spring boot java中编写一个函数来处理JPA存储库中的自定义查询?
Spring @transactional 在存储库中不起作用