2016-03-10 2 views
0

У меня есть таблица с двумя колонками, например, табличныеКак получить конкретную запись, используя группу по

id value 
1  2 
1  5 
1  4 

select * from table_data group by id 

, но я получил выход 1 1..but на самом деле я хочу этот выход для моего желания примера 1 4 или 1 5 ... как это получить ??

+1

не группируют по идентификатору –

+0

пожалуйста, укажите, если это SQL-сервер или MySQL, и также предоставляют более выборочные данные. – FLICKER

+1

Не может быть ms sql, он бы вернул синтаксическую ошибку. – Shadow

ответ

0

Использование MAX с GROUP BY:

select id, MAX(value) from table_data group by id 

Если вам нужен какой-либо из значения в группе появляются в наборе результатов, просто GROUP BY достаточно. Но вам нужно знать, что выходная строка не определена.

Обычно первая строка этого процесса будет помещена в вывод, представляющий его группу.

Вот демо на этом:

mysql> create table table_data(id int, value int); 
Query OK, 0 rows affected (0.01 sec) 

mysql> insert into table_data values (1,4),(1,5),(1,2); 
Query OK, 3 rows affected (0.00 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> SELECT * FROM table_data; 
SEL+------+-------+ 
| id | value | 
+------+-------+ 
| 1 |  4 | 
| 1 |  5 | 
| 1 |  2 | 
+------+-------+ 
3 rows in set (0.00 sec) 

mysql> SELECT * FROM table_data GROUP BY id; 
+------+-------+ 
| id | value | 
+------+-------+ 
| 1 |  4 | 
+------+-------+ 
1 row in set (0.00 sec) 
+0

В вышеприведенном запросе возвращается только максимальное значение ... но я хочу все возможные значения ... –

+0

@madeit Обновлено сообщение. Пожалуйста, проверьте. –

+0

Вы указываете «Я хочу все возможные значения», но использую «группу по». Определение «группа за» противоречит этому утверждению. Если вы не хотите объединить три записи «значение», чтобы вернуть: «id = 1, значение = 2,5,4». –

0

Вы можете использовать агрегатную функцию с помощью этого вы можете получить максимальное значение от него MAX function

SELECT id, MAX(value) 
FROM table_data 
GROUP BY id 
0

выберите ид, макс (значение) из Табличная группа по идентификатору

это будет возвращать 1, 5

выберите идентификатор, мин (v alue) из table_data group по id

это вернет 1,2.

в этом случае 1, 4 невозможно.

0
select m.id,m.value from 
(SELECT * FROM table_data order by field(value,4,2,5))m 
group by m.id 

мы можем получить то, что на выходе мы хотим ...

путем сделал

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