好吧,我似乎无法弄清楚这一点。我正在处理这个问题的第二天,是时候寻求一些帮助了。
这是有效的 SQL:
SELECT rt1.request_id, rt1.status
FROM request_transactions rt1
INNER JOIN (
SELECT max(id) AS max_id
FROM request_transactions
GROUP BY request_id
) AS rt2 ON rt1.id = rt2.max_id;
我到底如何使用 Cakephp 3 查询构建器来编写这个?我完全被聚合函数(max)的内部连接所困扰。
提前谢谢了。
编辑:这是表列和数据,如果有帮助的话:
SELECT id, user_id, created, modified FROM requests;
id | user_id | created | modified
----+---------+---------------------+---------------------
94 | 101 | 2017-07-04 18:20:47 | 2017-07-04 18:21:26
95 | 101 | 2017-07-04 18:48:14 | 2017-07-04 18:48:14
96 | 101 | 2017-07-04 18:48:40 | 2017-07-04 18:48:40
(3 rows)
SELECT id, status, created, request_id FROM request_transactions;
id | status | created | request_id
-----+----------+---------------------+------------
127 | created | 2017-07-04 18:20:47 | 94
128 | read | 2017-07-04 18:21:03 | 94
129 | rejected | 2017-07-04 18:21:26 | 94
130 | created | 2017-07-04 18:48:14 | 95
131 | created | 2017-07-04 18:48:40 | 96
(5 rows)
SELECT rt1.request_id, rt1.status
FROM request_transactions rt1
INNER JOIN (
SELECT max(id) AS max_id
FROM request_transactions
GROUP BY request_id
) AS rt2 ON rt1.id = rt2.max_id;
request_id | status
------------+----------
96 | created
94 | rejected
95 | created
(3 rows)