2016-04-27 2 views
1

У меня есть таблица, которая может иметь одну или несколько строк с тем же значением для столбца key_property.Mysql, Как сгруппировать набор строк, используя максимальное значение другого столбца?

Я хочу построить запрос в MySql, который возвращает набор, где каждое значение key_property представлена ​​только для одного из своих соответствующих строк и , что он также получает key_property фильтра для как приговорить, выбранный по максимальному значению другого столбца (скажем, event_id).

Как я могу это достичь?

UPDATE:

Вот образец нефильтрованной таблицы:

+--------------+--------+----------+ 
| key_property | others | event_id | 
+--------------+--------+----------+ 
| abcd  | B  |  1 | 
| abcd  | A  |  2 | 
| defg  | C  |  3 | 
| abcd  | D  |  4 | 
| hijk  | f  |  4 | 
+--------------+--------+----------+ 

При выполнении запроса с фильтром выставиться, как «D», данные результата должен выглядеть следующим образом:

+--------------+--------+----------+ 
| key_property | others | event_id | 
+--------------+--------+----------+ 
| abcd  | D  |  4 | 
| defg  | C  |  3 | 
+--------------+--------+----------+ 
+0

http://dev.mysql.com/doc/refman/5.7/en/example-maximum-column-group-row.html – CBroe

+0

показать образец Wi го данных и результатов. – scaisEdge

+2

Вы читаете http://stackoverflow.com/questions/7745609/sql-select-only-rows-with-max-value-on-a-column?rq=1 – codemonkeyliketab

ответ

0
SELECT * 
FROM tab WHERE (key_property,event_id) IN 
(SELECT key_property, MAX(event_id) 
    FROM tab 
    WHERE key_property like '%d%' 
    GROUP BY key_property 
) 
+0

@ Daniel Calderon Mori, это должно работать должным образом, не так ли? – Reto

+0

Он сделал, спасибо –