mysql SQL状态GROUP BY DISTINCT

时间:2016-04-07 08:56:11

标签: mysql sql distinct

我有一个状态数据库,如下所示:

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相同。

1 个答案:

答案 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值。使用这些值返回整行。