根据具有相同值的其他条目选择最新条目?

时间:2009-12-27 00:18:13

标签: sql mysql greatest-n-per-group

假设我有一张包含以下数据的表格:

ID     text     OtherID
_______________________
6     text1       24
7     text2       24
8     text3       24
9     text1       25
10    text2       25

如您所见,我有多个具有相同OtherID的条目。什么是一个sql语句,它只选择具有相同OtherID的所有条目中的最新ID。如果重要的话,这是在MySQL中完成的。

例如我希望它输出:

ID     text     OtherID
_______________________
8      text3       24
10     text2       25

2 个答案:

答案 0 :(得分:3)

使用:

SELECT DISTINCT
       x.id,
       x.text,
       x.otherid
  FROM TABLE x
  JOIN (SELECT t.otherid,
               MAX(t.id) 'max_id'
          FROM TABLE t
      GROUP BY t.otherid) y ON y.otherid = x.otherid
                           AND y.max_id = x.id

答案 1 :(得分:1)

如果您只想要最新的ID(由您的问题建议,但不是示例),那么只需使用

SELECT OtherID, MAX(ID) FROM table GROUP BY OtherID

但如果您想要任何其他列,那么OMG Ponies'answer就是您想要的。这是因为选择其他列(例如文本)不能保证返回与MAX(ID)返回的ID相同的行所对应的值。