2015-04-30 2 views
-2

У меня есть таблица, как этотMySQL выбрать конкретное значение из дублированных строк

id name  value 

1 Leo  0 
2 Ethan  0 
3 Claire  0 
4 Leo  1 
5 Claire  1 
6 Ethan  0 

Я хотел бы получить результаты без повторяющегося имени если значение равно 1, то она должна возвращать строку со значением 1, а не строка со значением 0

выглядит, как показано ниже:

id name  value 

6 Ethan  0 
4 Leo  1 
5 Claire  1 

Это выглядит довольно легко, но я боролся с ним в течение нескольких часов, пожалуйста, сообщите и дают советы. спасибо.

+0

что картина? – potashin

+0

Нет рисунка. Вы получаете первую запись для Этана и вторую запись для Лео и Клэр. Вы получаете максимальное значение для leo и claire, но для этана нет максимального значения. Как вы хотите решить, какие значения отображаются для 'id' и' value'? –

+0

Возможный дубликат [Поиск дубликатов значений в MySQL] (http://stackoverflow.com/questions/688549/finding-duplicate-values-in-mysql) – Supravat

ответ

0

Вот один из способов сделать то, что вы хотите. Сначала найдите значение max для каждого name, затем присоедините этот результат к таблице имен, чтобы получить соответствующий id. Если есть больше чем один id, возьмите max

select max(id), n.name, n.value 
    from names n 
    inner join (
     select name, max(value) value 
     from names 
     group by name 
    ) q 
     on q.name = n.name 
     and q.value = n.value 
    group by n.name; 

demo here

+0

ЭТО РАБОТАЕТ, МНОГО СПАСИБО –

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