0

假设我有一个包含一些数据的表,如下所示:

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
4

2 回答 2

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
于 2009-12-27T00:22:45.750 回答
1

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

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

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

于 2009-12-27T00:33:01.310 回答