[英]Select last record in each group
我有一張桌子:
id group_id name linked_group
1 1 Name1
2 1 Name2
3 1 Name3
4 1 Name4
5 2 Name5
6 2 Name6 3
7 2 Name7
8 3 Name8
9 3 Name9
10 4 Name10
11 4 Name11
我需要使用linked_group檢索每個組中的最后一條記錄:
id group_id name linked_group
4 1 Name4
9 3 Name9
11 4 Name11
這個怎么做? PS我需要忽略group_id = 2,因為這個group_id需要與group_id = 3聯合
SELECT Your_tableName.id ,Your_tableName.group_id ,name,linked_group
FROM Your_tableName
JOIN (SELECT MAX(id) id, group_id
FROM Your_tableName
GROUP BY group_id) A ON A.id = Your_tableName.id
如果表格不是太大,請使用以下查詢。
select max_id, group_id, name from table_name , (select max(id) as max_id from table_name group by group_id) tmp where id = max_id ;
這是使用行號模擬的另一種方法。 請注意where not exists語句,以忽略具有鏈接組的group_ids。
select s.id,s.group_id,s.name,s.linked_group
from
(
select t.*,
if(t.group_id <> @p , @rownumber:=1,@rownumber:=@rownumber + 1) rownumber,
@p:=t.group_id
from t t, (select @rownumber:=0,@p:=0) rn
where not exists (select * from t t1 where t1.group_id = t.group_id and t1.linked_group is not null)
order by t.group_id,t.id desc
) s
where s.rownumber = 1
試試看。 希望它會工作:)
SELECT a.*
FROM table_name a LEFT JOIN table_name b
ON (a.group_id = b.group_id AND a.id < b.id)
WHERE a.group_id <> 2 AND b.id IS NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.