Для начала надо определиться с термином "последний", поскольку в SQL нет порядка строк за исключением заданного через ORDER BY. Скажем, пусть будет "с максимальным `id`.
SELECT `t`.`key`, `t1`.`value1`,
`t2`.`value2`, `t3`.`value3`
FROM (
SELECT `key`,
MAX(IF(`value1` = '', -1, `id`)) AS `id1`,
MAX(IF(`value2` = '', -1, `id`)) AS `id2`,
MAX(IF(`value3` = '', -1, `id`)) AS `id3`
FROM `table`
GROUP BY `key`
) AS `t`
LEFT JOIN `table` AS `t1` ON `t1`.`id` = `t`.`id1`
LEFT JOIN `table` AS `t2` ON `t2`.`id` = `t`.`id2`
LEFT JOIN `table` AS `t3` ON `t3`.`id` = `t`.`id3`