2009-12-27 1 views
0

Допустит, у меня есть таблица с некоторыми данными, как следующее:Выберите самую новую запись на основе других записей с одинаковыми значениями?

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

Как вы можете видеть, у меня есть несколько записей с одинаковым OtherID. что было бы оператором sql, который будет выбирать только самый новый идентификатор из всех записей с тем же самым идентификатором OtherID. это делается в MySQL, если это имеет значение.

, например, я хочу его к выходу:

ID  text  OtherID 
_______________________ 
8  text3  24 
10  text2  25 

ответ

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 
+0

Спасибо, это сработало. – smont

1

Если вы хотите только новейшие идентификатор (предложенный ваш вопрос, но не пример), а затем просто использовать

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

, но если вы хотите любые другие столбцы, затем OMG Ponies' answer является то, что вы хотите. Это связано с тем, что при выборе других столбцов (например, текста) не гарантируется возврат значений, соответствующих той же строке, что и идентификатор, возвращаемый MAX (ID).