2016-03-10 61 views
0

我有表有兩列例如TABLE_DATA如何獲得特定的記錄,而使用GROUP BY

id value 
1  2 
1  5 
1  4 

select * from table_data group by id 

,但我得到的輸出爲1個1..but其實我想這個輸出我的願望例如1 4或1 5 ... 如何獲得?

+1

不羣的ID –

+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

您聲明「我想要所有可能的值」,但正在使用「group by」。 「group by」的定義與該陳述相反。除非您想要連接三個「值」條目,以便返回:「id = 1,value = 2,5,4」。 –

0

可以使用聚合函數使用這個,你可以從它那裏得到MAX function

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

選擇ID,MAX(值)的最大值由ID TABLE_DATA組

這將返回1,5

選擇ID,分鐘(ⅴ alue)from table_data group by id

這將返回1,2。

在這種情況下,1,4是不可能的。

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

我們可以得到任何我們想要的輸出...

通過使其