在業(yè)務(wù)中需要關(guān)聯(lián)表查詢,并且需要取出其中一個表的最新一條記錄時,需要將數(shù)據(jù)進行分組母剥,通過ARRAY_AGG函數(shù)苇羡。
下面的例子是,查詢出每個用戶的最新一個訂單婉烟。這里沒有采用網(wǎng)上說的子查詢是考慮到如果數(shù)據(jù)量過大的時候娩井,子查詢將會消耗大量的處理時間。
SELECT
user_as.*,order_as.table_order_pk_id
FROM
(
SELECT
order_as .table_user_pk_id,
(
SELECT
UNNEST (
ARRAY_AGG (
order_as .table_order_pk_id
ORDER BY
order_as .createdate DESC
)
)
LIMIT 1
) table_order_pk_id
FROM
order as order_as
GROUP BY
order_as .table_user_pk_id
) tmp_table,
user AS user_as,
order AS order_as
WHERE
tmp_table.table_user_pk_id = user_as.table_user_pk_id
AND tmp_table.table_order_pk_id= order_as.table_order_pk_id