Как написать этот MySQL Query? - PullRequest
2 голосов
/ 13 июня 2011

Предположим, у меня есть таблица с тремя целочисленными полями и одним строковым полем (только данные).

Например, это выглядит следующим образом:

Id      Category    Value   Data
1       1           3       ...
2       1           4       ...
3       2           2       ...
4       2           4       ...
5       3           5       ...
6       3           6       ...
7       3           2       ...
8       4           1       ...

Я хочу сделать для каждого Category, включить строку с минимальным полем Value в набор результатов.В этом случае будет возвращено:

Id      Category    Value   Data
1       1           3       ...
3       2           2       ...
7       3           2       ...
8       4           1       ...

Как написать такой запрос?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 13 июня 2011
select T1.Id,
       T1.Category,
       T1.Value,
       T1.Data
from YourTable as T1
  inner join (
               select Category,
                      min(Value) as Value
               from YourTable
               group by Category
             ) as T2
    on T1.Category = T2.Category and
       T1.Value = T2.Value
1 голос
/ 13 июня 2011
select *
from mytable t
join (select category, min(value) as value from mytable group by 1) x
    on t.value = x.value and t.category = x.category

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

0 голосов
/ 13 июня 2011
SELECT id,category,value,date 
FROM table_name 
WHERE category = (select distinct category from table_name)
0 голосов
/ 13 июня 2011
SELECT category, MIN(value) as Value
FROM table
GROUP BY category

Используйте функцию MIN и GROUP BY результаты в столбце Категория.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...