2017-01-13 2 views
0

У меня есть таблица т с колоннами AID и исх следующим образом:группы MySQL с максимальным значением в столбце

aID | ref 
----------- 
1 | B1.1 
1 | B1.2 
2 | C1.1 
2 | C1.2 
3 | D1.1 
3 | D1.2 

Каждый AID представляет собой идентификатор активности, который является внешним ключом к другой таблице. Столбец ref является версией этого действия, например. B1.1, B1.2

Я хотел бы SELECT * FROM таблица T GROUP BY t.aID и результирующего набора я получаю это

aID | ref 
----------- 
1 | B1.1 
2 | C1.1 
3 | D1.1 

То, что я пытаюсь достичь этого

aID | ref 
----------- 
1 | B1.2 
2 | C1.2 
3 | D1.2 

Как я могу это сделать?

ответ

0
SELECT aid, MAX(ref) ref FROM my_table GROUP BY aid; 

Данное решение является ограниченным тиражом и не подходит для более высоких номеров версий. Нормализовать процесс управления версиями.

+0

это хороший обходной способ @Strawberry, однако, лучше, если у меня есть столбец datetime и вместо этого сделайте MAX (datetime)? –

+0

попробовал Max (datetime), но он не сработает :( –

+0

@ExcubeDzynes Это потому, что у вас нет столбца datetime. – Strawberry

0

Если каждое значение REF имеют одинаковый формат (1 буква) используйте:

SELECT aID,substr(ref from 1 for 1) as ref1,max(cast(substr(ref,2) as decimal(10,2))) AS ref2 FROM `tabla` group by aID 

Вы получите результат, как:

enter image description here

Или вы можете просто сцепить как:

SELECT aID,concat(substr(ref from 1 for 1),max(cast(substr(ref,2) as decimal(10,2)))) AS ref2 FROM `tabla` group by aID 

для получения:

enter image description here

+0

Что делать, если у меня также есть AAA или AA? –

+0

Вам нужно будет создать пользовательскую функцию для разметки букв, так как regex не работает в этом контексте, я бы рекомендовал просто сделать другой столбец для разделения буквы и цифры ... Используйте конкатенацию, если вам действительно нужно только одно поле. –

0

После нескольких проб и ошибок, я сделал это, как этот

SELECT * FROM table t JOIN (SELECT .aID,max(x.ref) as max_ref 
FROM table x GROUP BY x.`aID`) t2 
ON t.`swp_activityID` = t2.`swp_activityID` AND t.`refNo` = t2.max_ref 

удалось решить после того, как со ссылкой на # величайшая-н-погруппной теге под редакцией @Bill Karwin

Смежные вопросы