2016-12-23 1 views
1

Я пытался сгруппировать по определенному ключу, но только более высокое значение. , например, позволяет сказать, что это мои данныеMysql GROUP ключом и выберите более высокое значение

ID  KEY  Name  Value1  Value2 
    1  52  James  0.5   0 
    2  52  Amy  0.2   0.1 
    3  65  Zeus  0.8   0.3 
    4  65  Chris  0.1   0 

Так что, когда я делаю

SELECT * FROM MyTable GROUP BY KEY 

Результаты, которые я получаю

ID  KEY  Name  Value1  Value2 
    2  52  Amy  0.2   0.1 
    4  65  Chris  0.1   0 

Результат я хочу,

ID  KEY  Name  Value1  Value2 
    1  52  James  0.5   0 
    3  65  Zeus  0.8   0.3 

I хотите, чтобы группа Group by KEY, но выберите человека с более высоким Value1, принадлежащим определенному KEY. Я не хочу использовать

WHERE Value1 > 0.4 

Есть тысячи записей, и заявление, где заявление не поможет. Я хочу знать, есть ли способ сравнить Value1 или Value2 между соответствующим KEY и выбрать большее значение при группировке.

Надеюсь, что это было ясно и спасибо заранее. :)

ответ

1

Первый запрос, чтобы получить ключи и максимальное значение

SELECT KEY, MAX(Value1) as mValue1 
FROM yourTable 
GROUP BY KEY 

Теперь присоединиться назад, чтобы получить остальную часть строк

SELECT yourTable.* 
FROM yourTable 
JOIN (
    SELECT KEY, MAX(Value1) as mValue1 
    FROM yourTable 
    GROUP BY KEY 
) AS sub on Sub.KEY = yourTable.KEY and Sub.mValue1 = yourTable.Value1 

Та да!

+0

1. 'ключ' зарезервирован. 2. Если несколько строк с одинаковым значением1, ваш запрос возвращает все эти строки. Я думаю, что только верхушка должна быть возвращена. – GurV

+0

@GurwinderSingh - 1. да «KEY» зарезервирован, «yourTable» также не является именем его таблицы - я надеюсь, что OP сможет справиться с этими проблемами. 2) OP должен сказать, что произойдет, если будет возвращено более одной строки, поскольку спецификация не говорит, что делать, просто получить первый или верхний результат приведет к той же проблеме, с которой он имеет дело сейчас. – Hogan

+0

спасибо! да, я понял, что изломы, и это сработало !. Снова Спасибо всем! – razerer

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