2
我有一段時間試圖找出HQL語句。我試圖讓一個組中的所有產品訂單的最新狀態,但似乎無法找出正確的HQL語法得到這個工作...從表中獲取最新的列,按HQL中的另一列分組。
示例表:
id | created_at | group_id | purchase_id | status
---|------------|----------|-------------|------------
0 | 10 | 3 | 6 | DELIVERING
1 | 11 | 3 | 6 | DELIVERED
2 | 12 | 3 | 7 | DELIVERING
3 | 13 | 3 | 8 | DELIVERING
4 | 14 | 4 | 13 | DELIVERING
5 | 15 | 4 | 13 | DELIVERED
6 | 16 | 4 | 13 | LOST
7 | 17 | 5 | 17 | DELIVERING
獲取每個purchase_id
,其中group_id
= 3.如果導致這個表格的最新(由created_at
):
id | created_at | group_id | purchase_id | status
---|------------|----------|-------------|------------
1 | 11 | 3 | 6 | DELIVERED
2 | 12 | 3 | 7 | DELIVERING
3 | 13 | 3 | 8 | DELIVERING
查詢在PostgreSQL的工作:
SELECT DISTINCT ON (o.purchase_id) *
FROM orders o
WHERE o.group_id = 3
ORDER BY o.purchase_id, o.created_at DESC
等效的HQL語句是什麼?
對不起,但我沒有看到這是如何得到最新的每個'purchase_id'分組?我看到你使用的是最新的'created_at'值(或者最高的'id'),但是看不到'purchase_id'仍然是如何分組的。 – justderb
我已經更新了答案。 – krokodilko
謝謝!我已經使用了第一個HQL語句,但只需要在WHERE ... IN()子句之後添加AND AND.Group_id =?來讓所有的東西都能正常工作! – justderb