前言
怎么獲取Mysql表中同一標識(flag)下多條記錄的最新記錄呢?這里的宗旨是先order by time desc,其查詢結果作為一個父表,然后再在父表中進行group by flag;這里值得注意的是,如果order by 與 group by在同一維表中的話,group by應該放在order by之前,
SQL示例
- 對于多張維表
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
- 對于單張維表
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
總結
總而言之,子查詢的按時間倒序的結果作為父表,外層查詢再進行分組即可獲取最新記錄,
CSDN認證博客專家
java
golang
linux
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/199072.html
標籤:其他
上一篇:MySQL字串與操作命令筆記
