В MySQL 8+ мы можем использовать ROW_NUMBER
здесь:
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY t1_fk ORDER BY id DESC) rn
FROM t2
)
SELECT id, t1_fk, cost
FROM cte
WHERE rn = 1;
В более ранних версиях MySQL одним из канонических способов справиться с этим было бы использование соединения с подзапросом. который находит максимальное id
значение для каждого t1_fk
:
SELECT a.id, a.t1_fk, a.cost
FROM t2 a
INNER JOIN
(
SELECT t1_fk, MAX(id) AS max_id
FROM t2
GROUP BY t1_fk
) b
ON a.t1_fk = b.t1_fk AND a.id = b.max_id;