我有一个状态数据库,如下所示:
id foreign_id status
1 1 1
2 5 2
3 2 0
4 5 4
此数据库将某些对象(foreign_id)与某些状态相关联。我的目标是让所有外国人获得最后的身份。不幸的是,如果我在foreign_id上使用DISTINCT,我的mysql-Database会随机选择一个状态,而不是最新状态。即使我通过id DESC订购它也不起作用。我如何设法获取我的信息?
在这个例子中,我想要的输出是:
id foreign_id status
1 1 1
3 2 0
4 5 4
注意:缺少第二行,因为foreign_id" 5"有一个较新的行(4)。
我已经尝试过GROUP BY构造,但它失败的方式与DISTINCT相同。
答案 0 :(得分:0)
自我加入:
select t1.*
from tablename t1
join (select foreign_id, max(id) as id from tablename group by foreign_id) t2
on t1.foreign_id = t2.foreign_id and t1.id = t2.id
子查询用于查找每个foreign_id的最高id值。使用这些值返回整行。