Prefácio
Como obter o último registro de vários registros sob o mesmo sinalizador (sinalizador) na tabela Mysql? O objetivo aqui é ordenar por tempo desc primeiro, e o resultado da consulta como uma tabela pai e, em seguida, agrupar por sinalizador na tabela pai; é importante notar aqui que se ordenar por e agrupar por estão na mesma tabela de dimensão, agrupar por Deve ser colocado antes do pedido por.
Exemplo de SQL
- Para tabelas de múltiplas dimensões
select task.*
from task_info task
left join(
select *
from(
select *
from task_status
order by create_datetime desc) t
group by t.task_id) status on task.id = status.task_id
where
locate(status.task_status, #{
taskStatus}) > 0
order by task.create_datetime, task.id desc
- Para uma tabela de dimensão única
select sub_talent_pool.*
from (select * from pool
where plan = #{
plan}
order by modify_time desc) sub_talent_pool
group by sub_talent_pool.tree_structure_id, sub_talent_pool.into_pool_time
order by sub_talent_pool.into_pool_time desc
Resumindo
De modo geral, o resultado cronológico reverso da subconsulta é usado como a tabela pai e a consulta externa é agrupada para obter o registro mais recente.