Вот мой стол:Как сгруппировать по двум полям в MySQL?
gw_id |gw_payload |gw_name |gw_ref |gw_time |gw_created_time |
------|-----------|--------|-------|--------------------|--------------------|
1 |aaa |PHP |0.1.1 |2015-11-11 11:34:41 |2015-11-11 13:59:44 |
2 |bbb |PHP |0.1.1 |2015-11-11 11:34:41 |2015-11-11 13:59:57 |
3 |ccc |RUBY |0.1.2 |2015-11-10 01:34:41 |2015-11-10 13:59:57 |
4 |ddd |RUBY |0.1.4 |2015-11-10 02:34:41 |2015-11-10 16:59:57 |
Я хочу, чтобы захватить записи группы по gw_name
и я хочу, чтобы получить последнюю gw_ref
и последнюю gw_time
. Так что я хочу ниже:
gw_name |gw_ref_max |gw_time_max |
--------|-----------|--------------------|
RUBY |0.1.4 |2015-11-10 02:34:41 |
PHP |0.1.1 |2015-11-11 11:34:41 |
Я использую этот SQL, она работает, но я не думаю, что это правильно, я волнуюсь:
select gw_name, max(gw_ref) as gw_ref_max, max(gw_time) as gw_time_max
from tbl group by gw_name order by gw_time,gw_created_time desc
Так что правильно SQL я должен записывать?
SQL-запрос кажется мне прекрасным. Почему вы думаете, что это неправильно? – Mureinik
вы хотите получить 'последний gw_ref и последний gw_time' или '' последний gw_ref и соответствующий gw_time''. Если вы хотите, чтобы оба последних, то ваш запрос выглядит нормально. Если вы хотите «последний gw_ref и соответствующее gw_time», то вы включаете условие в предложение WHERE для проверки gw_ref = (выберите max (gw_ref) из ...). – PK20
@ PK20, да, я хочу, чтобы последнее соответствовало 'gw_name', @Mureinik, я беспокоюсь, потому что не думаю, что могу использовать max() в поле string (' gw_ref'). – Phoenix