У меня есть таблица x
, что это как один ниже:как выбрать отдельные строки для столбца
id | name | observed_value |
1 | a | 100 |
2 | b | 200 |
3 | b | 300 |
4 | a | 150 |
5 | c | 300 |
Я хочу, чтобы сделать запрос, чтобы в наборе результатов у меня есть ровно одна запись для одного имени:
(1, a, 100)
(2, b, 200)
(5, c, 300)
Если в таблице выше указано несколько записей, соответствующих названию, скажите «a», я просто возьму один из них.
В моей текущей реализации я сделать запрос, как это:
select x.* from x ,
(select distinct name, min(observed_value) as minimum_val
from x group by name) x1
where x.name = x1.name and x.observed_value = x1.observed_value;
Но я думаю, что может быть какой-то лучший способ вокруг, скажите, пожалуйста, если вы знаете, спасибо заранее.
EDIT
Я использую MySQL и моя таблица содержит более трех столбцов, показанных здесь, так что мне кажется, что внутренний запрос не может выполнить мое требование.
Я уверен, что это было задано раньше, но я не могу найти его :( –
Какой механизм базы данных вы используете (например, MySQL, MS-SQL)? – Senseful
Отличительные черты вашего внутреннего запроса - посторонние, будет гарантировать, что вы получите только отдельные значения. Любые дубликаты будут сгруппированы вместе. – Senseful